Kaynağa Gözat

页面统计

huangzhiguo 1 yıl önce
ebeveyn
işleme
b82cd727d7

+ 3 - 3
src/main/java/com/caimei365/tools/controller/BaseApi.java

@@ -69,11 +69,11 @@ public class BaseApi {
     /**
      * 临时接口
      */
-    /*@GetMapping("/base/oldData")
+    @GetMapping("/base/oldData")
     public void oldData() {
-        cmBehaviorRecordService.insertBehaviorUser();
+        cmBehaviorRecordService.pageStatistics();
     }
-*/
+
     @ApiOperation("获取小程序二维码图片")
     @PostMapping("/wxacode")
     public ResponseJson<String> generateWxacode(@RequestBody String params) throws Exception {

+ 59 - 0
src/main/java/com/caimei365/tools/mapper/CmBehaviorRecordMapper.java

@@ -188,5 +188,64 @@ public interface CmBehaviorRecordMapper {
      * 更新机构地址数据
      */
     void upClubAddress(@Param("clubId") String clubId, @Param("provinceId") Integer provinceId, @Param("cityId") Integer cityId);
+
+    /**
+     * 需要统计的供应商Id
+     * @return
+     */
+    List<Integer> getShopId();
+
+    /**
+     * 需要统计的供应商商品Id
+     * @return
+     */
+    List<Integer> getProductId(@Param("shopId") Integer shopId);
+
+    /**
+     * 需要统计的供应商文章Id
+     * @param shopId
+     * @return
+     */
+    List<Integer> getShopInfoId(@Param("shopId") Integer shopId);
+
+    /**
+     * 需要统计的供应商搜索词Id
+     * @param shopId
+     * @return
+     */
+    List<SearchFrequencyVo> getShopKeywordId(@Param("shopId") Integer shopId);
+
+    /**
+     * 检索统计信息
+     * @param accessDate
+     * @param pageType
+     * @param pagePath
+     * @return
+     */
+    CmBehaviorRecordPo getBehaviorList(@Param("accessDate") String accessDate , @Param("pageType") Integer pageType, @Param("pagePath") String pagePath);
+
+    /**
+     * 添加供应商主页统计数据
+     * @param cmPageShopPo
+     */
+    void insertPageShop(CmPageShopPo cmPageShopPo);
+
+    /**
+     * 添加供应商商品统计数据
+     * @param cmPageShopProductPo
+     */
+    void insertPageProduct(CmPageShopProductPo cmPageShopProductPo);
+
+    /**
+     * 添加供应商文章统计数据
+     * @param cmPageShopInfoPo
+     */
+    void insertPageInfo(CmPageShopInfoPo cmPageShopInfoPo);
+
+    /**
+     * 添加供应商搜索词统计数据
+     * @param cmPageShopKeywordPo
+     */
+    void insertPageKeyword(CmPageShopKeywordPo cmPageShopKeywordPo);
 }
 

+ 38 - 0
src/main/java/com/caimei365/tools/model/po/CmPageShopInfoPo.java

@@ -0,0 +1,38 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/9/7
+ */
+@Data
+public class CmPageShopInfoPo {
+    private Integer id;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 文章Id
+     */
+    private Integer infoId;
+    /**
+     * 链接
+     */
+    private String link;
+    /**
+     * 访问次数
+     */
+    private Integer accessNumber;
+    /**
+     * 访问时长
+     */
+    private String accessDuration;
+    /**
+     * 时间
+     */
+    private String accessDate;
+}

+ 38 - 0
src/main/java/com/caimei365/tools/model/po/CmPageShopKeywordPo.java

@@ -0,0 +1,38 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/9/7
+ */
+@Data
+public class CmPageShopKeywordPo {
+    private Integer id;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 搜索词Id
+     */
+    private Integer searchId;
+    /**
+     * 链接
+     */
+    private String link;
+    /**
+     * 访问次数
+     */
+    private Integer accessNumber;
+    /**
+     * 访问时长
+     */
+    private String accessDuration;
+    /**
+     * 时间
+     */
+    private String accessDate;
+}

+ 34 - 0
src/main/java/com/caimei365/tools/model/po/CmPageShopPo.java

@@ -0,0 +1,34 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/9/7
+ */
+@Data
+public class CmPageShopPo {
+    private Integer id;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 跳转链接
+     */
+    private String shopLink;
+    /**
+     * 访问次数
+     */
+    private Integer accessNumber;
+    /**
+     * 访问时长
+     */
+    private String accessDuration;
+    /**
+     * 时间
+     */
+    private String accessDate;
+}

+ 38 - 0
src/main/java/com/caimei365/tools/model/po/CmPageShopProductPo.java

@@ -0,0 +1,38 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/9/7
+ */
+@Data
+public class CmPageShopProductPo {
+    private Integer id;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 商品Id
+     */
+    private Integer productId;
+    /**
+     * 链接
+     */
+    private String link;
+    /**
+     * 访问次数
+     */
+    private Integer accessNumber;
+    /**
+     * 访问时长
+     */
+    private String accessDuration;
+    /**
+     * 时间
+     */
+    private String accessDate;
+}

+ 5 - 0
src/main/java/com/caimei365/tools/service/CmBehaviorRecordService.java

@@ -27,4 +27,9 @@ public interface CmBehaviorRecordService {
     void insertTodayData();
 
     void updateClubAddress(Integer startId, Integer endId);
+
+    /**
+     * 页面统计
+     */
+    void pageStatistics();
 }

+ 74 - 0
src/main/java/com/caimei365/tools/service/impl/CmBehaviorRecordServiceImpl.java

@@ -544,6 +544,80 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         }
     }
 
+    /**
+     * 页面统计
+     */
+    @Override
+    public void pageStatistics() {
+        log.info("页面统计数据");
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar instance = Calendar.getInstance();
+        instance.setTime(new Date());
+        instance.add(Calendar.DAY_OF_MONTH, -1);
+        Date time = instance.getTime();
+        String format = dateFormat.format(time);
+        log.info("dateTime========"+format);
+        // 统计供应商
+        List<Integer> shopIds = recordMapper.getShopId();
+        shopIds.forEach( s -> {
+            log.info("统计供应商数据");
+            // 检索供应商统计信息
+            CmBehaviorRecordPo behavior = recordMapper.getBehaviorList(format, 14, s.toString());
+            CmPageShopPo cmPageShopPo = new CmPageShopPo();
+            cmPageShopPo.setShopId(s);
+            cmPageShopPo.setAccessNumber(Integer.parseInt(behavior.getNumber()));
+            cmPageShopPo.setShopLink(behavior.getPagePath());
+            cmPageShopPo.setAccessDuration(behavior.getAccessDuration());
+            cmPageShopPo.setAccessDate(format);
+            // 加入统计供应商数据
+            recordMapper.insertPageShop(cmPageShopPo);
+            log.info("统计供应商商品数据");
+            // 需要统计的供应商商品
+            List<Integer> productIdIdList = recordMapper.getProductId(s);
+            for (Integer productId : productIdIdList) {
+                behavior = recordMapper.getBehaviorList(format, 6, productId.toString());
+                CmPageShopProductPo productPo = new CmPageShopProductPo();
+                productPo.setShopId(s);
+                productPo.setProductId(productId);
+                productPo.setLink(behavior.getPagePath());
+                productPo.setAccessNumber(Integer.parseInt(behavior.getNumber()));
+                productPo.setAccessDuration(behavior.getAccessDuration());
+                productPo.setAccessDate(format);
+                // 加入统计供应商商品数据
+                recordMapper.insertPageProduct(productPo);
+            }
+            // 需要统计的供应商文章
+            List<Integer> infoIdList = recordMapper.getShopInfoId(s);
+            for (Integer infoId : infoIdList) {
+                behavior = recordMapper.getBehaviorList(format, 11, infoId.toString());
+                CmPageShopInfoPo infoPo = new CmPageShopInfoPo();
+                infoPo.setShopId(s);
+                infoPo.setInfoId(infoId);
+                infoPo.setLink(behavior.getPagePath());
+                infoPo.setAccessNumber(Integer.parseInt(behavior.getNumber()));
+                infoPo.setAccessDuration(behavior.getAccessDuration());
+                infoPo.setAccessDate(format);
+                // 添加供应商文章统计数据
+                recordMapper.insertPageInfo(infoPo);
+            }
+            // 需要统计的供应商搜索词
+            List<SearchFrequencyVo> keywordList = recordMapper.getShopKeywordId(s);
+            for (SearchFrequencyVo keyword : keywordList) {
+                behavior = recordMapper.getBehaviorList(format, 8, keyword.getKeyword());
+                CmPageShopKeywordPo keywordPo = new CmPageShopKeywordPo();
+                keywordPo.setShopId(s);
+                keywordPo.setSearchId(keyword.getId());
+                keywordPo.setLink(behavior.getPagePath());
+                keywordPo.setAccessNumber(Integer.parseInt(behavior.getNumber()));
+                keywordPo.setAccessDuration(behavior.getAccessDuration());
+                keywordPo.setAccessDate(format);
+                // 添加供应商搜索词统计数据
+                recordMapper.insertPageKeyword(keywordPo);
+            }
+        });
+        log.info("页面统计结束");
+    }
+
 
     // 获取IP对应地址 ---- 太平洋
     public static String recordIp(String ip) throws IOException {

+ 6 - 0
src/main/java/com/caimei365/tools/task/CmOrganValueSystemTask.java

@@ -69,4 +69,10 @@ public class CmOrganValueSystemTask {
      */
     @Scheduled(cron = "0 0 * * * ?")
     public void insertBehaviorToday() { cmBehaviorRecordService.insertTodayData();}
+
+    /**
+     * 生成页面统计数据
+     */
+    @Scheduled(cron = "0 0 8 * * ?")
+    public void pageStatistics(){ cmBehaviorRecordService.pageStatistics();}
 }

+ 2 - 1
src/main/java/com/caimei365/tools/task/ProductTask.java

@@ -29,8 +29,9 @@ public class ProductTask {
     private BaseMapper baseMapper;
     /**
      * 每天凌晨1点执行一次
+     * todo 二手商品暂无,弃用二手商品自动下架  同时商品下架标记进入 cm_organize_product_info  恢复使用时需修改sql
      */
-    @Scheduled(cron = "0 0 1 * * ?")
+    // @Scheduled(cron = "0 0 1 * * ?")
     public void task() {
         long currentTime = System.currentTimeMillis();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+ 59 - 0
src/main/resources/mapper/CmBehaviorRecordMapper.xml

@@ -471,5 +471,64 @@
         </set>
         where clubID = #{clubId}
     </update>
+    <select id="getShopId" resultType="java.lang.Integer">
+        select shopId from cm_shop_statistics where delFlag= 0 and status = 0
+    </select>
+
+    <select id="getProductId" resultType="java.lang.Integer">
+        SELECT productId FROM product WHERE shopId = #{shopId}
+    </select>
+
+    <select id="getShopInfoId" resultType="java.lang.Integer">
+        select infoId from cm_shop_info where shopId = #{shopId} and delFlag = 0 and status = 0
+    </select>
+
+    <select id="getShopKeywordId" resultType="com.caimei365.tools.model.po.SearchFrequencyVo">
+        SELECT ifnull(cusf.keyword, '') as keyword, ifnull(csk.searchId, 0) as id
+        FROM cm_shop_keyword csk
+                 LEFT JOIN cm_user_search_frequency cusf ON cusf.id = csk.searchId
+        WHERE csk.shopId = #{shopId} AND csk.delFlag = 0 AND csk.status = 0
+    </select>
+
+    <select id="getBehaviorList" resultType="com.caimei365.tools.model.po.CmBehaviorRecordPo">
+        SELECT ifnull((select pagePath from cm_behavior_record where pagePath like concat('%',#{pagePath},'%') order by accessDate desc LIMIT 1), '') as pagePath,
+               count(recordID) as number,
+               ifnull(sum(accessDuration), 0) as accessDuration
+        from cm_behavior_record
+        <where>
+            delFlag = 0 and accessDate = #{accessDate}
+            <if test="pageType != null">
+                and pageType = #{pageType}
+            </if>
+            <if test="pageType != 8">
+                <if test="pagePath != null and pagePath != ''">
+                    and pagePath like concat('%',#{pagePath},'%')
+                </if>
+            </if>
+            <if test="pageType == 8">
+                and pageLabel like concat('%',#{pagePath},'%')
+            </if>
+        </where>
+    </select>
+
+    <insert id="insertPageShop">
+        INSERT INTO cm_page_shop (shopId, shopLink, accessNumber, accessDuration, accessDate)
+        VALUES (#{shopId}, #{shopLink}, #{accessNumber}, #{accessDuration}, #{accessDate})
+    </insert>
+
+    <insert id="insertPageProduct">
+        insert into cm_page_shop_product (shopId, productId, link, accessNumber, accessDuration, accessDate)
+        values (#{shopId}, #{productId}, #{link}, #{accessNumber}, #{accessDuration}, #{accessDate})
+    </insert>
+
+    <insert id="insertPageInfo">
+        insert into cm_page_shop_info (shopId, infoId, link, accessNumber, accessDuration, accessDate)
+        values (#{shopId}, #{infoId}, #{link}, #{accessNumber}, #{accessDuration}, #{accessDate})
+    </insert>
+
+    <insert id="insertPageKeyword">
+        insert into cm_page_shop_keyword (shopId, searchId, link, accessNumber, accessDuration, accessDate)
+        values (#{shopId}, #{searchId}, #{link}, #{accessNumber}, #{accessDuration}, #{accessDate})
+    </insert>
 </mapper>