浏览代码

bug fix on 2020.05.22

jiequan.bi 5 年之前
父节点
当前提交
827c31b360

+ 13 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/SystemDateConstant.java

@@ -0,0 +1,13 @@
+package org.jeecg.common.constant;
+
+public class SystemDateConstant {
+
+    //系統年月日时间格式
+    public static String yyyy_MM_dd="yyyy-MM-dd";
+
+    public static String yyyy_MM="yyyy-MM";
+
+    //系统数据起始时间
+    public static String BEGIN_TIME="2019-09-01";
+
+}

+ 49 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialTopCtrl.java

@@ -0,0 +1,49 @@
+package org.jeecg.modules.ctop.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.ctop.service.IMaterialTopService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ *  Created by JQ.bi on 2020.5.21
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/material")
+public class MaterialTopCtrl {
+
+    @Autowired
+    IMaterialTopService materialTopService;
+
+    @PostMapping("/top/cost")
+    public Result<PageInfo<JSONObject>> getCostTop(@RequestBody JSONObject requestBody,
+                                                   @RequestParam(defaultValue = "cost") String target,
+                                                   @RequestParam(defaultValue = "desc") String order,
+                                                   @RequestParam(defaultValue = "1") int pageNo,
+                                                   @RequestParam(defaultValue = "10") int pageSize) {
+        Result<PageInfo<JSONObject>> result = new Result<>();
+        if(requestBody.isEmpty()){
+            log.error("request body is empty");
+            result.setSuccess(false);
+        }
+        try {
+            String startDate= requestBody.getString("startDate");
+            String endDate= requestBody.getString("endDate");
+            if(startDate.isEmpty()||endDate.isEmpty()){
+                log.error("startDate or endDate is empty");
+                result.setSuccess(false);
+            }
+            PageInfo<JSONObject> resultPageInfo = materialTopService.pageQueryMaterialTop(endDate, startDate, target, order, pageNo, pageSize);
+            result.setResult(resultPageInfo);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+            result.setSuccess(false);
+        }
+        return result;
+    }
+}

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MaterialTopMapper.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.ctop.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MaterialTopMapper {
+
+    List<JSONObject> queryMaterialTop(@Param("startDate") String startDate, @Param("endDate") String endDate);
+
+}

+ 31 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MaterialTopMapper.xml

@@ -0,0 +1,31 @@
+<?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="org.jeecg.modules.ctop.mapper.MaterialTopMapper">
+
+
+    <select id="queryMaterialTop" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        NAME,
+        stat_date AS statDate,
+        cost,
+        click,
+        show_num AS showNum,
+        active,
+        register,
+        pay,
+        phone_convert phoneConvert,
+        form_convert formConvert,
+        convert_rate convertRate,
+        residue,
+        play3s,
+        play10s
+        FROM
+        ctop_material_report_total_result
+        WHERE
+            stat_datetime &lt;= #{endDate}
+          AND
+            stat_datetime &gt;= #{startDate}
+        ORDER BY cost desc
+    </select>
+
+</mapper>

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IMaterialTopService.java

@@ -0,0 +1,8 @@
+package org.jeecg.modules.ctop.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+
+public interface IMaterialTopService {
+    PageInfo<JSONObject> pageQueryMaterialTop(String endDate, String startDate,String target,String order, int pageNo, int pageSize);
+}

+ 33 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/MaterialTopServiceImpl.java

@@ -0,0 +1,33 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.jeecg.modules.ctop.mapper.MaterialTopMapper;
+import org.jeecg.modules.ctop.service.IMaterialTopService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  Created by JQ.bi on 2020.05.22
+ */
+@Service
+public class MaterialTopServiceImpl  implements IMaterialTopService {
+
+    @Autowired
+    MaterialTopMapper materialTopMapper;
+
+    @Override
+    public PageInfo<JSONObject> pageQueryMaterialTop(String endDate, String startDate, String target, String  order, int pageNo , int pageSize) {
+        //时间维度分页查询
+        PageHelper.startPage(pageNo,pageSize);
+        List<JSONObject> jsonObjectList = materialTopMapper.queryMaterialTop(endDate,startDate);
+        PageInfo<JSONObject> pageInfo= new PageInfo<>();
+        pageInfo.setList(jsonObjectList);
+
+        return pageInfo;
+    }
+
+}

+ 62 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceHomepageReportCtrl.java

@@ -0,0 +1,62 @@
+package cn.com.ctop.toutiao.modules.report.controller;
+
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceHomepageReportService;
+import com.alibaba.fastjson.JSONObject;
+import jdk.nashorn.internal.scripts.JS;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *  Created by JQ.bi on 2020.5.19
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/byteDance/homePage")
+public class BytedanceHomepageReportCtrl {
+
+    @Autowired
+    IBytedanceHomepageReportService bytedanceHomepageReportService;
+
+    @PostMapping("/report/week")
+    public Result<Map<String,JSONObject>> getWeekReport(@RequestBody JSONObject requestBody) {
+        Result<Map<String,JSONObject>> result = new Result<>();
+        try {
+            Map<String, JSONObject> weekReport = bytedanceHomepageReportService.getWeekReport(requestBody);
+            result.setResult(weekReport);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+            result.setSuccess(false);
+        }
+        return result;
+    }
+
+    @PostMapping("/report/chart")
+    public Result<List<JSONObject>> getChartReport(@RequestBody JSONObject requestBody) {
+        Result<List<JSONObject>> result = new Result<>();
+        if(requestBody.isEmpty()){
+            log.error("request body is empty");
+            result.setSuccess(false);
+        }
+        try {
+            List<JSONObject> chartReport=bytedanceHomepageReportService.getChartByDate(requestBody);
+            result.setResult(chartReport);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+            result.setSuccess(false);
+        }
+
+        return result;
+
+    }
+}

+ 34 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceHomepageMapper.java

@@ -0,0 +1,34 @@
+package cn.com.ctop.toutiao.modules.report.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Created by JQ.bi on 2020.05.19
+ */
+public interface BytedanceHomepageMapper {
+
+    //今日汇总数据
+    JSONObject queryTodaySumReportBy(@Param("statDate") String statDate);
+
+    //今日明细数据
+    List<JSONObject> queryTodayDetailReportBy(@Param("statDate") String statDate);
+
+    //根据开始、结束时间 查询汇总数据
+    JSONObject querySumByStartEndDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+
+    //根据开始、结束时间 查询明细数据
+    List<JSONObject> queryDetailByStartEndDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+
+    //按月分组查询明细数据
+    List<JSONObject> queryDetailGroupMonthByDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+
+    //查询固定月的明细数据
+    List<JSONObject> queryDetailGroupDayByMonth(@Param("month") String month);
+
+    //项目消耗排行榜
+    List<JSONObject> queryTopCost(@Param("endDate") String endDate, @Param("startDate") String startDate,@Param("rank") int rank);
+
+}

+ 147 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceHomepageMapper.xml

@@ -0,0 +1,147 @@
+<?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="cn.com.ctop.toutiao.modules.report.mapper.BytedanceHomepageMapper">
+
+
+    <select id="queryTodaySumReportBy" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+	     ROUND(sum(cost),2) cost,
+	     sum(show_num) showNum,
+	     sum(stat_datetime) click,
+	     max(stat_hour) maxHour
+       FROM
+	      ctop_bytedance_report_advertiser_hourly
+       WHERE
+	      stat_datetime = #{statDate}
+      </select>
+
+
+    <select id="queryTodayDetailReportBy" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         stat_datetime statDate,
+         stat_hour statHour,
+	     ROUND(sum(cost),2) cost,
+	     sum(show_num) showNum,
+	     sum(click) click
+	   FROM
+	      ctop_bytedance_report_advertiser_hourly
+       WHERE
+	      stat_datetime = #{statDate}
+       GROUP BY
+	      stat_hour
+       ORDER BY
+	      stat_hour ASC
+
+    </select>
+
+    <select id="querySumByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         ROUND(sum(cost), 2) cost,
+         sum(show_num) showNum,
+         sum(click) click
+       FROM
+         ctop_bytedance_report_advertiser_daily
+       WHERE
+         stat_datetime &lt;= #{endDate}
+       AND
+         stat_datetime &gt;= #{startDate}
+    </select>
+
+    <select id="queryDetailByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         ROUND(sum(cost), 2) cost,
+         sum(show_num) showNum,
+         sum(click) click,
+         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate
+       FROM
+         ctop_bytedance_report_advertiser_daily
+       WHERE
+            stat_datetime &lt;= #{endDate}
+       AND  stat_datetime &gt;= #{startDate}
+       group by stat_datetime
+       order by stat_datetime asc
+    </select>
+
+    <select id="queryDetailGroupMonthByDate" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         ROUND(sum(cost), 2) cost,
+         sum(show_num) showNum,
+         sum(click) click,
+         DATE_FORMAT(stat_datetime,'%Y-%m') statDate
+       FROM
+         ctop_bytedance_report_advertiser_daily
+       WHERE
+         stat_datetime &lt;= #{endDate}
+       AND
+         stat_datetime &gt;= #{startDate}
+      group by DATE_FORMAT(stat_datetime,'%Y-%m')
+      order by stat_datetime asc
+    </select>
+
+    <select id="queryDetailGroupDayByMonth" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         ROUND(sum(cost), 2) cost,
+         sum(show_num) showNum,
+         sum(click) click,
+         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate,
+         SUBSTR(DATE_FORMAT(stat_datetime,'%Y-%m-%d') FROM 9 FOR 2) day
+       FROM
+         ctop_bytedance_report_advertiser_daily
+       WHERE
+         stat_datetime like '${month}%'
+      group by DATE_FORMAT(stat_datetime,'%Y-%m-%d')
+      order by stat_datetime asc
+    </select>
+
+    <select id="queryTopCost" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         t2.auth_name as authName,
+         ROUND(sum(t1.cost), 2) cost
+       FROM
+         ctop_bytedance_report_advertiser_daily t1
+       LEFT JOIN
+         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
+       WHERE
+         stat_datetime &lt;= #{endDate}
+       AND
+         stat_datetime &gt;= #{startDate}
+       GROUP BY t1.advertiser_id
+       ORDER BY sum(t1.cost) DESC
+       limit #{rank}
+    </select>
+
+    <select id="queryTopClick" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         t2.auth_name as authName,
+         ROUND(sum(t1.click), 2) click
+       FROM
+         ctop_bytedance_report_advertiser_daily t1
+       LEFT JOIN
+         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
+       WHERE
+         stat_datetime &lt;= #{endDate}
+       AND
+         stat_datetime &gt;= #{startDate}
+       GROUP BY t1.advertiser_id
+       ORDER BY sum(t1.click) DESC
+       limit #{rank}
+    </select>
+
+    <select id="queryTopShowNum" resultType="com.alibaba.fastjson.JSONObject">
+       SELECT
+         t2.auth_name as authName,
+         ROUND(sum(t1.show_num), 2) showNum
+       FROM
+         ctop_bytedance_report_advertiser_daily t1
+       LEFT JOIN
+         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
+       WHERE
+         stat_datetime &lt;= #{endDate}
+       AND
+         stat_datetime &gt;= #{startDate}
+       GROUP BY t1.advertiser_id
+       ORDER BY sum(t1.show_num) DESC
+       limit #{rank}
+    </select>
+
+</mapper>

+ 15 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IBytedanceHomepageReportService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.toutiao.modules.report.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IBytedanceHomepageReportService {
+
+    Map<String,JSONObject> getWeekReport(JSONObject json);
+
+    List<JSONObject> getChartByDate(JSONObject json);
+
+    JSONObject getTopCostByDate(JSONObject json);
+}