Browse Source

数据漏斗模型新增字段

zhijiezhao 1 year ago
parent
commit
5426422ea0

+ 5 - 0
src/main/java/com/caimei365/manager/entity/caimei/shopImport/Impressions.java

@@ -36,6 +36,11 @@ public class Impressions {
      */
      */
     @ExcelProperty("小红书")
     @ExcelProperty("小红书")
     private Integer redBookNumber;
     private Integer redBookNumber;
+    /**
+     * 一点号
+     */
+    @ExcelProperty("一点号")
+    private Integer pointSingNumber;
     /**
     /**
      * 其它自媒体渠道
      * 其它自媒体渠道
      */
      */

+ 5 - 0
src/main/java/com/caimei365/manager/entity/caimei/shopImport/ReadVolume.java

@@ -36,6 +36,11 @@ public class ReadVolume {
      */
      */
     @ExcelProperty("小红书")
     @ExcelProperty("小红书")
     private Integer redBookNumber;
     private Integer redBookNumber;
+    /**
+     * 一点号
+     */
+    @ExcelProperty("一点号")
+    private Integer pointSingNumber;
     /**
     /**
      * 其它自媒体渠道
      * 其它自媒体渠道
      */
      */

+ 3 - 3
src/main/java/com/caimei365/manager/service/caimei/listener/StageListener.java

@@ -44,7 +44,7 @@ public class StageListener extends AnalysisEventListener<Stage> {
     @Override
     @Override
     public void doAfterAllAnalysed(AnalysisContext analysisContext) {
     public void doAfterAllAnalysed(AnalysisContext analysisContext) {
         System.out.println("-----------阶段描述----------");
         System.out.println("-----------阶段描述----------");
-        System.out.println("dataList======="+dataList);
+        System.out.println("dataList=======" + dataList);
         saveData(dataList);
         saveData(dataList);
     }
     }
 
 
@@ -57,8 +57,8 @@ public class StageListener extends AnalysisEventListener<Stage> {
      * 保存数据
      * 保存数据
      */
      */
     public void saveData(List<Stage> dataList) {
     public void saveData(List<Stage> dataList) {
-        dataList.forEach( stage -> {
-            log.info("dataList"+dataList.size());
+        dataList.forEach(stage -> {
+            log.info("dataList" + dataList.size());
             stage.setMarketReportId(marketReportId);
             stage.setMarketReportId(marketReportId);
             marketShopDao.insertMarketStage(stage);
             marketShopDao.insertMarketStage(stage);
         });
         });

+ 25 - 14
src/main/java/com/caimei365/manager/service/caimei/user/impl/CmMarketShopServiceImpl.java

@@ -3,6 +3,7 @@ package com.caimei365.manager.service.caimei.user.impl;
 import cn.hutool.core.util.ZipUtil;
 import cn.hutool.core.util.ZipUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.excel.support.ExcelTypeEnum;
+import com.aspose.slides.p2cbca448.imp;
 import com.caimei.utils.MathUtil;
 import com.caimei.utils.MathUtil;
 import com.caimei.utils.StringUtils;
 import com.caimei.utils.StringUtils;
 import com.caimei365.manager.dao.user.CmMarketShopDao;
 import com.caimei365.manager.dao.user.CmMarketShopDao;
@@ -52,9 +53,11 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
 
 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
 
 
-    @Resource private CmMarketShopDao marketShopDao;
+    @Resource
+    private CmMarketShopDao marketShopDao;
 
 
-    @Resource private formDataUtils formDataUtils;
+    @Resource
+    private formDataUtils formDataUtils;
 
 
     /**
     /**
      * 上传供应商营销logo
      * 上传供应商营销logo
@@ -162,7 +165,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public ResponseJson saveMarketReport( MultipartFile reportFile) throws IOException {
+    public ResponseJson saveMarketReport(MultipartFile reportFile) throws IOException {
 
 
         boolean isZipPack = true;
         boolean isZipPack = true;
 
 
@@ -173,12 +176,12 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
             boolean mkdirs = packFile.mkdirs();
             boolean mkdirs = packFile.mkdirs();
         }
         }
 
 
-        if (reportFile== null) {
+        if (reportFile == null) {
             return ResponseJson.error(-1, "请上传文件", null);
             return ResponseJson.error(-1, "请上传文件", null);
         }
         }
         String contentType = reportFile.getContentType();
         String contentType = reportFile.getContentType();
         String filename = reportFile.getOriginalFilename();
         String filename = reportFile.getOriginalFilename();
-        log.info("contentType===="+contentType);
+        log.info("contentType====" + contentType);
         //将压缩包保存在指定路径
         //将压缩包保存在指定路径
         String packFilePath = extract + File.separator + filename;
         String packFilePath = extract + File.separator + filename;
         if (contentType.contains(ZIP_FILE)) {
         if (contentType.contains(ZIP_FILE)) {
@@ -207,8 +210,8 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
         }
         }
         //获取压缩包名称
         //获取压缩包名称
         filename = filename.substring(0, filename.lastIndexOf("."));
         filename = filename.substring(0, filename.lastIndexOf("."));
-        log.info("filename===="+filename);
-        log.info("packFilePath===="+packFilePath);
+        log.info("filename====" + filename);
+        log.info("packFilePath====" + packFilePath);
         if (file.exists()) {
         if (file.exists()) {
             file.delete();
             file.delete();
         }
         }
@@ -339,7 +342,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
             }
             }
         }
         }
         try {
         try {
-            shopInfo.setChartTitle("【"+shopInfo.getName()+"】"+dateFormat.format(dateFormat.parse(shopInfo.getAddTime())) + "数据报表");
+            shopInfo.setChartTitle("【" + shopInfo.getName() + "】" + dateFormat.format(dateFormat.parse(shopInfo.getAddTime())) + "数据报表");
         } catch (ParseException e) {
         } catch (ParseException e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
@@ -382,12 +385,13 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
         map.put("wechats", articleReturnData);
         map.put("wechats", articleReturnData);
         // 获取展现量数据
         // 获取展现量数据
         List<Impressions> marketImpressions = marketShopDao.getMarketImpressions(id);
         List<Impressions> marketImpressions = marketShopDao.getMarketImpressions(id);
-        int generalNumber = 0, microBlog = 0, redBookNumber = 0, otherNumber = 0;
+        int generalNumber = 0, microBlog = 0, redBookNumber = 0, otherNumber = 0, pointSingNumber = 0;
         if (null != marketImpressions && marketImpressions.size() > 0) {
         if (null != marketImpressions && marketImpressions.size() > 0) {
             for (Impressions imp : marketImpressions) {
             for (Impressions imp : marketImpressions) {
                 generalNumber += imp.getGeneralNumber();
                 generalNumber += imp.getGeneralNumber();
                 microBlog += imp.getMicroBlog();
                 microBlog += imp.getMicroBlog();
                 redBookNumber += imp.getRedBookNumber();
                 redBookNumber += imp.getRedBookNumber();
+                pointSingNumber += imp.getPointSingNumber();
                 otherNumber += imp.getOtherNumber();
                 otherNumber += imp.getOtherNumber();
             }
             }
         }
         }
@@ -395,11 +399,13 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
         name.add("公众号");
         name.add("公众号");
         name.add("微博");
         name.add("微博");
         name.add("小红书");
         name.add("小红书");
+        name.add("一点号");
         name.add("其它自媒体渠道");
         name.add("其它自媒体渠道");
         returnData.setNames(name);
         returnData.setNames(name);
         value.add(generalNumber);
         value.add(generalNumber);
         value.add(microBlog);
         value.add(microBlog);
         value.add(redBookNumber);
         value.add(redBookNumber);
+        value.add(pointSingNumber);
         value.add(otherNumber);
         value.add(otherNumber);
         returnData.setValues(value);
         returnData.setValues(value);
         map.put("intention", returnData);
         map.put("intention", returnData);
@@ -412,6 +418,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
                 generalNumber += readVolume.getGeneralNumber();
                 generalNumber += readVolume.getGeneralNumber();
                 microBlog += readVolume.getMicroBlog();
                 microBlog += readVolume.getMicroBlog();
                 redBookNumber += readVolume.getRedBookNumber();
                 redBookNumber += readVolume.getRedBookNumber();
+                pointSingNumber += readVolume.getPointSingNumber();
                 otherNumber += readVolume.getOtherNumber();
                 otherNumber += readVolume.getOtherNumber();
             }
             }
         }
         }
@@ -419,11 +426,13 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
         name.add("公众号");
         name.add("公众号");
         name.add("微博");
         name.add("微博");
         name.add("小红书");
         name.add("小红书");
+        name.add("一点号");
         name.add("其它自媒体渠道");
         name.add("其它自媒体渠道");
         returnData.setNames(name);
         returnData.setNames(name);
         value.add(generalNumber);
         value.add(generalNumber);
         value.add(microBlog);
         value.add(microBlog);
         value.add(redBookNumber);
         value.add(redBookNumber);
+        value.add(pointSingNumber);
         value.add(otherNumber);
         value.add(otherNumber);
         returnData.setValues(value);
         returnData.setValues(value);
         map.put("allVisits", readVolumeReturnData);
         map.put("allVisits", readVolumeReturnData);
@@ -565,7 +574,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
             List<String> region = marketShopDao.getRegion(accessDate, shopKeyword);
             List<String> region = marketShopDao.getRegion(accessDate, shopKeyword);
             Set<String> province = new HashSet<>();
             Set<String> province = new HashSet<>();
             String com = "";
             String com = "";
-            for (String str : region ) {
+            for (String str : region) {
                 String trim = str.trim();
                 String trim = str.trim();
                 com = trim.substring(0, 2);
                 com = trim.substring(0, 2);
                 province.add(com);
                 province.add(com);
@@ -585,6 +594,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
 
 
     /**
     /**
      * 读取文件夹数据————指定格式 (营销供应商)
      * 读取文件夹数据————指定格式 (营销供应商)
+     *
      * @param marketReportId
      * @param marketReportId
      * @param filePath
      * @param filePath
      * @throws IOException
      * @throws IOException
@@ -598,7 +608,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
         Map<String, String> advertImageInfoList = new HashMap<>();
         Map<String, String> advertImageInfoList = new HashMap<>();
         File file = new File(filePath);
         File file = new File(filePath);
         if (file.exists() && file.isDirectory()) {
         if (file.exists() && file.isDirectory()) {
-            for (File fileSpecific: file.listFiles()) {
+            for (File fileSpecific : file.listFiles()) {
                 if (fileSpecific.getName().equals("SEO汇总图片") && fileSpecific.exists() && fileSpecific.isDirectory()) {
                 if (fileSpecific.getName().equals("SEO汇总图片") && fileSpecific.exists() && fileSpecific.isDirectory()) {
                     for (File fileSpecificContain : fileSpecific.listFiles()) {
                     for (File fileSpecificContain : fileSpecific.listFiles()) {
                         if (fileSpecificContain.getName().contains("seo")) {
                         if (fileSpecificContain.getName().contains("seo")) {
@@ -610,10 +620,10 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
                         }
                         }
                     }
                     }
                 }
                 }
-                log.info("fileSpecific.getName()======"+fileSpecific.getName());
+                log.info("fileSpecific.getName()======" + fileSpecific.getName());
                 if (fileSpecific.getName().equals("advert广告图片") && fileSpecific.exists() && fileSpecific.isDirectory()) {
                 if (fileSpecific.getName().equals("advert广告图片") && fileSpecific.exists() && fileSpecific.isDirectory()) {
                     for (File fileSpecificContain : fileSpecific.listFiles()) {
                     for (File fileSpecificContain : fileSpecific.listFiles()) {
-                        log.info("fileSpecificContain.getName()======"+fileSpecificContain.getName());
+                        log.info("fileSpecificContain.getName()======" + fileSpecificContain.getName());
                         if (fileSpecificContain.getName().contains("首页")) {
                         if (fileSpecificContain.getName().contains("首页")) {
                             // 上传图到服务器并获取图链接,存入数据库,图片名称需与 广告图点击量 列表名称一致
                             // 上传图到服务器并获取图链接,存入数据库,图片名称需与 广告图点击量 列表名称一致
                             MultipartFile filex = FileUtil.fileToMultipartFileConverter(fileSpecificContain);
                             MultipartFile filex = FileUtil.fileToMultipartFileConverter(fileSpecificContain);
@@ -632,7 +642,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
                 }
                 }
             }
             }
             // 读取完图片文件后在读取数据文件 xlsx
             // 读取完图片文件后在读取数据文件 xlsx
-            for (File fileSpecific: file.listFiles()) {
+            for (File fileSpecific : file.listFiles()) {
                 if (fileSpecific.getName().endsWith(".xlsx") || fileSpecific.getName().endsWith(".xls")) {
                 if (fileSpecific.getName().endsWith(".xlsx") || fileSpecific.getName().endsWith(".xls")) {
                     readExcel(marketReportId, fileSpecific, seoImagePathList, advertImageHomeList, advertImageInfoList);
                     readExcel(marketReportId, fileSpecific, seoImagePathList, advertImageHomeList, advertImageInfoList);
                 }
                 }
@@ -643,6 +653,7 @@ public class CmMarketShopServiceImpl implements CmMarketShopService {
 
 
     /**
     /**
      * 多sheet excel文件读取 -- 指定sheet名称  多sheet读取必须多次创建文件流
      * 多sheet excel文件读取 -- 指定sheet名称  多sheet读取必须多次创建文件流
+     *
      * @param marketReportId
      * @param marketReportId
      * @param file
      * @param file
      * @param seoImagePathList
      * @param seoImagePathList

+ 45 - 39
src/main/resources/mapper/user/CmMarketShopDao.xml

@@ -21,7 +21,7 @@
         cmr.addTime,
         cmr.addTime,
         cmr.delFlag
         cmr.delFlag
         FROM cm_market_report cmr
         FROM cm_market_report cmr
-            left join cm_shop_product csp on csp.id = cmr.marketId
+        left join cm_shop_product csp on csp.id = cmr.marketId
         LEFT JOIN cm_shop_statistics css ON css.id = csp.statisticsId
         LEFT JOIN cm_shop_statistics css ON css.id = csp.statisticsId
         <where>
         <where>
             cmr.marketId = #{marketId} AND cmr.delFlag = 0
             cmr.marketId = #{marketId} AND cmr.delFlag = 0
@@ -49,7 +49,7 @@
 
 
     <update id="updateMarketReportVisible">
     <update id="updateMarketReportVisible">
         update cm_market_report
         update cm_market_report
-        set visible = 1,
+        set visible    = 1,
             reportTime = now()
             reportTime = now()
         where id = #{id}
         where id = #{id}
     </update>
     </update>
@@ -77,22 +77,26 @@
     </insert>
     </insert>
 
 
     <insert id="insertMarketArticleReadVolume">
     <insert id="insertMarketArticleReadVolume">
-        insert into cm_market_articleReadVolume (marketReportId, firstTime, title, link, titleReferred, type, keyword, channel,
+        insert into cm_market_articleReadVolume (marketReportId, firstTime, title, link, titleReferred, type, keyword,
+                                                 channel,
                                                  touchNumber, wechatNumber, addTime, delFlag)
                                                  touchNumber, wechatNumber, addTime, delFlag)
-        values (#{marketReportId}, #{firstTime}, #{title}, #{link}, #{titleReferred}, #{type}, #{keyword}, #{channel}, #{touchNumber},
+        values (#{marketReportId}, #{firstTime}, #{title}, #{link}, #{titleReferred}, #{type}, #{keyword}, #{channel},
+                #{touchNumber},
                 #{wechatNumber}, now(), 0)
                 #{wechatNumber}, now(), 0)
     </insert>
     </insert>
 
 
     <insert id="insertMarketImpressions">
     <insert id="insertMarketImpressions">
-        insert into cm_market_impressions (marketReportId, generalNumber, microBlog, redBookNumber, otherNumber,
-                                           addTime, delFlag)
-        values (#{marketReportId}, #{generalNumber}, #{microBlog}, #{redBookNumber}, #{otherNumber}, now(), 0)
+        insert into cm_market_impressions (marketReportId, generalNumber, microBlog, redBookNumber, pointSingNumber,
+                                           otherNumber, addTime, delFlag)
+        values (#{marketReportId}, ifnull(#{generalNumber}, 0), ifnull(#{microBlog}, 0), ifnull(#{redBookNumber}, 0),
+                ifnull(#{pointSingNumber}, 0), ifnull(#{otherNumber}, 0), now(), 0)
     </insert>
     </insert>
 
 
     <insert id="insertMarketReadVolume">
     <insert id="insertMarketReadVolume">
-        insert into cm_market_readVolume (marketReportId, generalNumber, microBlog, redBookNumber, otherNumber, addTime,
-                                          delFlag)
-        values (#{marketReportId}, #{generalNumber}, #{microBlog}, #{redBookNumber}, #{otherNumber}, now(), 0)
+        insert into cm_market_readVolume (marketReportId, generalNumber, microBlog, redBookNumber, pointSingNumber,
+                                          otherNumber, addTime, delFlag)
+        values (#{marketReportId}, ifnull(#{generalNumber}, 0), ifnull(#{microBlog}, 0), ifnull(#{redBookNumber}, 0),
+                ifnull(#{pointSingNumber}, 0), ifnull(#{otherNumber}, 0), now(), 0)
     </insert>
     </insert>
 
 
     <insert id="insertMarketSummary">
     <insert id="insertMarketSummary">
@@ -247,6 +251,7 @@
                generalNumber,
                generalNumber,
                microBlog,
                microBlog,
                redBookNumber,
                redBookNumber,
+               pointSingNumber,
                otherNumber
                otherNumber
         FROM cm_market_impressions
         FROM cm_market_impressions
         WHERE marketReportId = #{marketReportId}
         WHERE marketReportId = #{marketReportId}
@@ -257,6 +262,7 @@
                generalNumber,
                generalNumber,
                microBlog,
                microBlog,
                redBookNumber,
                redBookNumber,
+               pointSingNumber,
                otherNumber
                otherNumber
         FROM cm_market_readVolume
         FROM cm_market_readVolume
         WHERE marketReportId = #{marketReportId}
         WHERE marketReportId = #{marketReportId}
@@ -336,24 +342,24 @@
     <!--用户身份-->
     <!--用户身份-->
     <select id="getUserIdentity" resultType="com.caimei365.manager.entity.caimei.ReturnEntity">
     <select id="getUserIdentity" resultType="com.caimei365.manager.entity.caimei.ReturnEntity">
         SELECT
         SELECT
-            (CASE c.linkManIdentity
-                WHEN 1 THEN '老板'
-                WHEN 2 THEN '采购'
-                WHEN 3 THEN '运营'
-                WHEN 4 THEN '其他'
-            END) AS name,
-            COUNT(c.userId) as value
+        (CASE c.linkManIdentity
+        WHEN 1 THEN '老板'
+        WHEN 2 THEN '采购'
+        WHEN 3 THEN '运营'
+        WHEN 4 THEN '其他'
+        END) AS name,
+        COUNT(c.userId) as value
         FROM cm_behavior_record_index cbri
         FROM cm_behavior_record_index cbri
         LEFT JOIN club c ON c.userId = cbri.userId
         LEFT JOIN club c ON c.userId = cbri.userId
         LEFT JOIN USER u ON u.userId = cbri.userId
         LEFT JOIN USER u ON u.userId = cbri.userId
         WHERE cbri.accessDate = #{accessDate}
         WHERE cbri.accessDate = #{accessDate}
-            AND cbri.userId != 0
-            AND u.userIdentity = 2
-            AND (
-                <foreach collection="labels" item="label" open="(" separator="or" close=")">
-                    cbri.label LIKE concat('%', #{label}, '%')
-                </foreach>
-            )
+        AND cbri.userId != 0
+        AND u.userIdentity = 2
+        AND (
+        <foreach collection="labels" item="label" open="(" separator="or" close=")">
+            cbri.label LIKE concat('%', #{label}, '%')
+        </foreach>
+        )
         GROUP BY c.linkManIdentity
         GROUP BY c.linkManIdentity
     </select>
     </select>
 
 
@@ -361,25 +367,25 @@
     <!--机构类型-->
     <!--机构类型-->
     <select id="getClubType" resultType="com.caimei365.manager.entity.caimei.ReturnEntity">
     <select id="getClubType" resultType="com.caimei365.manager.entity.caimei.ReturnEntity">
         SELECT
         SELECT
-            (CASE c.firstClubType
-                WHEN 1 THEN '医美'
-                WHEN 2 THEN '生美'
-                WHEN 3 THEN '项目公司'
-                WHEN 4 THEN '个人'
-                WHEN 5 THEN '其他'
-            END) AS name,
-            COUNT(c.userId) as value
+        (CASE c.firstClubType
+        WHEN 1 THEN '医美'
+        WHEN 2 THEN '生美'
+        WHEN 3 THEN '项目公司'
+        WHEN 4 THEN '个人'
+        WHEN 5 THEN '其他'
+        END) AS name,
+        COUNT(c.userId) as value
         FROM cm_behavior_record_index cbri
         FROM cm_behavior_record_index cbri
         LEFT JOIN club c ON c.userId = cbri.userId
         LEFT JOIN club c ON c.userId = cbri.userId
         LEFT JOIN USER u ON u.userId = cbri.userId
         LEFT JOIN USER u ON u.userId = cbri.userId
         WHERE cbri.accessDate = #{accessDate}
         WHERE cbri.accessDate = #{accessDate}
-            AND cbri.userId != 0
-            AND u.userIdentity = 2
-            AND (
-                <foreach collection="labels" item="label" open="(" separator="or" close=")">
-                    cbri.label LIKE concat('%', #{label}, '%')
-                </foreach>
-            )
+        AND cbri.userId != 0
+        AND u.userIdentity = 2
+        AND (
+        <foreach collection="labels" item="label" open="(" separator="or" close=")">
+            cbri.label LIKE concat('%', #{label}, '%')
+        </foreach>
+        )
         GROUP BY c.firstClubType
         GROUP BY c.firstClubType
     </select>
     </select>
 </mapper>
 </mapper>