Jelajahi Sumber

访问来源

huangzhiguo 2 tahun lalu
induk
melakukan
1b952dfde7

+ 61 - 1
src/main/java/com/caimei/www/controller/unlimited/ArticleController.java

@@ -7,12 +7,19 @@ import com.caimei.www.pojo.page.BaseLink;
 import com.caimei.www.pojo.page.ImageLink;
 import com.caimei.www.service.page.ArticleService;
 import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ServerWebExchange;
+import org.thymeleaf.util.StringUtils;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -21,6 +28,7 @@ import java.util.List;
  * @author : Charles
  * @date : 2020/7/31
  */
+@Slf4j
 @Controller
 public class ArticleController extends BaseController {
 
@@ -93,13 +101,35 @@ public class ArticleController extends BaseController {
      * 文章详情【旧】
      */
     @GetMapping("/info/detail-{id}-1.html")
-    public String toArticleDetail(@PathVariable("id") Integer id, final Model model) {
+    public String toArticleDetail(@PathVariable("id") Integer id, final Model model, ServerWebExchange serverWebExchange, ServerHttpResponse response) {
         List<BaseLink> typeList = articleService.getArticleTypes();
         Article article = articleService.getArticleInfo(id);
         if(article == null){
             // return super.errorPath();
             return "redirect:/info/404.html";
         }
+        // 获取referer 判断访问来源
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String ip = "";
+        String referer = "";
+        String source = "";
+        HttpHeaders headers = request.getHeaders();
+        ip = String.valueOf(headers.get("x-forwarded-for"));
+        if (StringUtils.isEmpty(ip)) {
+            ip = String.valueOf(headers.get("X-Real-IP"));
+        }
+        if (null != ip && "" != ip) {
+            ip = ip.replaceAll("[^\\d.]", "");
+        }
+        List<String> referer1 = headers.get("Referer");
+        if (referer1 != null) {
+            referer = referer1.get(0);
+        }
+        source = source(referer);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dateFormat.format(new Date());
+        articleService.insertRecord(ip,referer,source,format);
+        log.info("文章详情访问来源记录完成========》"+source);
         List<BaseLink> data = articleService.getArticleLabels().getData();
         List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
         List<Article> articles=articleService.getInfoById(id);
@@ -201,4 +231,34 @@ public class ArticleController extends BaseController {
         return articleService.articlePv(id);
     }
 
+    private String source(String link) {
+        if (link.contains("www.baidu.com")) {
+            return "1";
+        }
+        if (link.contains("www.so.com")) {
+            return "2";
+        }
+        if (link.contains("www.google.cn")) {
+            return "3";
+        }
+        if (link.contains("m.sm.cn")) {
+            return "4";
+        }
+        if (link.contains("toutiao.com")) {
+            return "5";
+        }
+        if (link.contains("www.sogou.com")) {
+            return "6";
+        }
+        if (link.contains("servicewechat.com")) {
+            return "7";
+        }
+        if (link.contains("www.caimei365.com")) {
+            return "0";
+        }
+        if (link.contains("zzjtest.gz.aeert.com")) {
+            return "0";
+        }
+        return null;
+    }
 }

+ 61 - 1
src/main/java/com/caimei/www/controller/unlimited/HomeController.java

@@ -6,12 +6,19 @@ import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.service.page.BaseService;
 import com.caimei.www.service.page.HomeService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.server.ServerWebExchange;
+import org.thymeleaf.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -41,7 +48,28 @@ public class HomeController extends BaseController {
      * @return
      */
     @GetMapping("/index.html")
-    public String home(final Model model) {
+    public String home(final Model model, ServerWebExchange serverWebExchange, ServerHttpResponse response) {
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String ip = "";
+        String referer = "";
+        String source = "";
+        HttpHeaders headers = request.getHeaders();
+        ip = String.valueOf(headers.get("x-forwarded-for"));
+        if (StringUtils.isEmpty(ip)) {
+            ip = String.valueOf(headers.get("X-Real-IP"));
+        }
+        if (null != ip && "" != ip) {
+            ip = ip.replaceAll("[^\\d.]", "");
+        }
+        List<String> referer1 = headers.get("Referer");
+        if (referer1 != null) {
+            referer = referer1.get(0);
+        }
+        source = source(referer);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dateFormat.format(new Date());
+        homeService.insertRecord(ip,referer,source,format);
+        log.info("首页访问来源记录完成========》"+source);
 		// 获取banner图
 		List<ImageLink> bannerList = homeService.getHomeBanners();
 		// 首页楼层
@@ -82,4 +110,36 @@ public class HomeController extends BaseController {
     public JsonModel<List<ImageLink>> getAdvertising() {
         return homeService.getAdvertising();
     }
+
+
+    private String source(String link) {
+        if (link.contains("www.baidu.com")) {
+            return "1";
+        }
+        if (link.contains("www.so.com")) {
+            return "2";
+        }
+        if (link.contains("www.google.cn")) {
+            return "3";
+        }
+        if (link.contains("m.sm.cn")) {
+            return "4";
+        }
+        if (link.contains("toutiao.com")) {
+            return "5";
+        }
+        if (link.contains("www.sogou.com")) {
+            return "6";
+        }
+        if (link.contains("servicewechat.com")) {
+            return "7";
+        }
+        if (link.contains("www.caimei365.com")) {
+            return "0";
+        }
+        if (link.contains("zzjtest.gz.aeert.com")) {
+            return "0";
+        }
+        return null;
+    }
 }

+ 3 - 0
src/main/java/com/caimei/www/mapper/ArticleDao.java

@@ -101,4 +101,7 @@ public interface ArticleDao {
     String getLabelById(Integer id);
 
     List<Article> getArticleRelatedLimit(@Param("id")Integer id, @Param("labels")String[] strings);
+
+    void insertRecord(@Param("IP") String IP, @Param("referer") String referer,
+                      @Param("accessSource") String accessSource,@Param("accessTime") String accessTime,@Param("pageType") String pageType);
 }

+ 2 - 0
src/main/java/com/caimei/www/mapper/HomeDao.java

@@ -25,6 +25,8 @@ public interface HomeDao {
      */
     List<ImageLink> getAdvertising();
 
+    void insertRecord(@Param("IP") String IP, @Param("referer") String referer,
+                     @Param("accessSource") String accessSource,@Param("accessTime") String accessTime,@Param("pageType") String pageType);
 //    /**
 //     * 首页楼层
 //     */

+ 8 - 0
src/main/java/com/caimei/www/service/page/ArticleService.java

@@ -74,4 +74,12 @@ public interface ArticleService {
     JsonModel articlePv(Integer id);
 
     List<Article> getInfoById(Integer id);
+    /**
+     * 访问来源
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    void insertRecord(String IP, String referer, String accessSource,String accessTime);
 }

+ 9 - 0
src/main/java/com/caimei/www/service/page/HomeService.java

@@ -34,4 +34,13 @@ public interface HomeService {
      * 右侧侧边栏数据
      */
     Map<String, Object> getHomeSideJson();
+
+    /**
+     * 访问来源
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    void insertRecord(String IP, String referer, String accessSource,String accessTime);
 }

+ 13 - 0
src/main/java/com/caimei/www/service/page/impl/ArticleServiceImpl.java

@@ -191,6 +191,19 @@ public class ArticleServiceImpl implements ArticleService {
         return relateds;
     }
 
+    /**
+     * 访问来源
+     *
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    @Override
+    public void insertRecord(String IP, String referer, String accessSource, String accessTime) {
+        articleDao.insertRecord(IP, referer, accessSource,accessTime,"11");
+    }
+
     private String getIp(ServerWebExchange serverWebExchange){
        ServerHttpRequest request = serverWebExchange.getRequest();
         return Objects.requireNonNull(request.getRemoteAddress()).getAddress().toString();

+ 5 - 0
src/main/java/com/caimei/www/service/page/impl/HomeServiceImpl.java

@@ -78,6 +78,11 @@ public class HomeServiceImpl implements HomeService {
         }
     }
 
+    @Override
+    public void insertRecord(String IP, String referer, String accessSource, String accessTime) {
+        homeDao.insertRecord(IP, referer, accessSource,accessTime,"1");
+    }
+
     /**
      * 首页左侧广告图
      */

+ 4 - 0
src/main/resources/mapper/ArticleMapper.xml

@@ -171,4 +171,8 @@
 		limit 3
 	</select>
 
+	<insert id="insertRecord">
+		INSERT INTO cm_behavior_record_ref (IP, referer, accessSource, accessTime,pageType)
+		VALUES(#{IP}, #{referer}, #{accessSource}, #{accessTime},#{pageType})
+	</insert>
 </mapper>

+ 4 - 0
src/main/resources/mapper/HomeMapper.xml

@@ -15,6 +15,10 @@
 		order by sort, createDate desc
 	</select>
 
+	<insert id="insertRecord">
+		INSERT INTO cm_behavior_record_ref (IP, referer, accessSource, accessTime,pageType)
+		VALUES(#{IP}, #{referer}, #{accessSource}, #{accessTime},#{pageType})
+	</insert>
 	<!--	<select id="getHomePageFloor" resultType="com.caimei.www.pojo.page.PageFloor">-->
 <!--		select id, type, floorTitle as title, floorDetail as detail-->
 <!--		from new_page_floor-->