hcst_sunzhen 4 vuotta sitten
vanhempi
commit
594623c1c3

+ 134 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MediaReportCtrl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.controller;
 
+import cn.com.ctop.common.module.entity.Product;
 import cn.com.ctop.common.module.entity.SysCompany;
 import cn.com.ctop.common.module.service.ISysCompanyService;
 import cn.com.ctop.common.module.utils.ExportExcelUtils;
@@ -7,6 +8,7 @@ import cn.com.ctop.common.module.utils.HttpUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.ctop.service.IMediaReportService;
@@ -40,13 +42,13 @@ public class MediaReportCtrl {
         Result<List<SysCompany>> result=new Result<>();
         //TODO 没有维护渠道的信息暂时不能再库里加,会影响到绩效等其他接口查询公司的接口
         List<SysCompany> list=sysCompanyService.list();
-        SysCompany sysCompany = new SysCompany();
-        sysCompany.setId(4L);
-        sysCompany.setCompanyId("6weq589875c040119adst08751712368");
-        sysCompany.setCompanyCode("A04");
-        sysCompany.setCompanyName("渠道");
-        sysCompany.setArea("渠道");
-        list.add(sysCompany);
+        //SysCompany sysCompany = new SysCompany();
+        //sysCompany.setId(4L);
+        //sysCompany.setCompanyId("6weq589875c040119adst08751712368");
+        //sysCompany.setCompanyCode("A04");
+        //sysCompany.setCompanyName("渠道");
+        //sysCompany.setArea("渠道");
+        //list.add(sysCompany);
         result.setSuccess(true);
         result.setResult(list);
         return result;
@@ -69,10 +71,33 @@ public class MediaReportCtrl {
         return result;
     }
 
+    //获取所有产品
+    @ResponseBody
+    @RequestMapping(value = "/getAllProductList")
+    public Result<List<Product>> deleteProduct(HttpServletRequest request, HttpServletResponse response){
+        log.info("/ctop/product/getAllProductList 方法开始");
+        Result<List<Product>> result = new Result();
+
+        try {
+            List<Product> allProductList = mediaReportService.getAllProductList();
+            result.setResult(allProductList);
+        }catch (Exception e){
+            log.error(e.getMessage());
+            result.setSuccess(false);
+            result.setMessage("error");
+        }finally{
+            log.info("/ctop/product/getAllProductList 方法结束");
+        }
+
+        return result;
+    }
+
+
     @PostMapping("/{pageNo}/{pageSize}")
     public Result<PageInfo<JSONObject>> getReport(@PathVariable int pageNo,
                                                   @PathVariable int pageSize,
-                                                  @RequestBody JSONObject requestBody){ Result<PageInfo<JSONObject>> result = new Result<>();
+                                                  @RequestBody JSONObject requestBody){
+        Result<PageInfo<JSONObject>> result = new Result<>();
         if(requestBody.isEmpty()){
             log.error("requestBody is null");
             result.setSuccess(false);
@@ -139,4 +164,105 @@ public class MediaReportCtrl {
             log.error(e.getMessage());
         }
     }
+
+    @PostMapping("/mediaReport/{pageNum}/{pageSize}")
+    public Result<PageInfo<JSONObject>> mediaReport(@PathVariable int pageNum,
+                                                  @PathVariable int pageSize,
+                                                  @RequestBody JSONObject requestBody){
+        Result<PageInfo<JSONObject>> result = new Result<>();
+        if(StringUtils.isBlank(requestBody.getString("todayDate")) || requestBody.getInteger("mediaType") ==null){
+            result.setSuccess(false);
+            result.setMessage("参数有误");
+        }
+
+        if(requestBody.isEmpty()){
+            log.error("requestBody is null");
+            result.setSuccess(false);
+            return result;
+        }
+        PageInfo<JSONObject> pageInfo = mediaReportService.mediaReport(pageNum,pageSize,requestBody);
+
+        result.setResult(pageInfo);
+        result.setSuccess(true);
+        return result;
+    }
+
+
+    //@PostMapping("/{pageNum}/{pageSize}")
+    //public Result<PageInfo<JSONObject>> toutiaoMediaReport(@PathVariable int pageNum,
+    //                                              @PathVariable int pageSize,
+    //                                              @RequestBody JSONObject requestBody){
+    //    Result<PageInfo<JSONObject>> result = new Result<>();
+    //    if(requestBody.isEmpty()){
+    //        log.error("requestBody is null");
+    //        result.setSuccess(false);
+    //        return result;
+    //    }
+    //    PageInfo<JSONObject> pageInfo =mediaReportService.toutiaoMediaReport(pageNum ,pageSize,requestBody);
+    //
+    //    result.setResult(pageInfo);
+    //    result.setSuccess(true);
+    //    return result;
+    //}
+
+    /**
+     *  导出数据
+     * @param requestBody
+     * @param request
+     * @param response
+     */
+    @PostMapping("/exportMediaReportExcel")
+    public Result exportMediaReportExcel(@RequestBody JSONObject requestBody,
+                               HttpServletRequest request,
+                               HttpServletResponse response) {
+        Result result = new Result();
+        if(StringUtils.isBlank(requestBody.getString("todayDate")) || requestBody.getInteger("mediaType") ==null){
+            result.setSuccess(false);
+            result.setMessage("参数有误");
+        }
+
+        List<JSONObject> excelData = mediaReportService.exportMediaReportExcel(requestBody);
+
+        List<List<Object>> excelList= new ArrayList<>();
+        excelData.forEach(data->{
+            List<Object> temp= new ArrayList<>();
+            temp.add(data.get("mediaType")==null?"-":data.get("mediaType"));
+            //temp.add(data.get("advertiserId")==null?"-":data.get("advertiserId"));
+            temp.add(data.get("advertiserName")==null?"-":data.get("advertiserName"));
+            temp.add(data.get("productName")==null?"-":data.get("productName"));
+            //temp.add(data.get("operatorManger")==null?"-":data.get("operatorManger"));
+            temp.add(data.get("operator")==null?"-":data.get("operator"));
+            temp.add(data.get("sale")==null?"-":data.get("sale"));
+            temp.add(data.get("todayCost"));
+            temp.add(data.get("yesterdayCost"));
+            temp.add(data.get("diffCost"));
+            excelList.add(temp);
+        });
+        try{
+            String[] headers = {"媒体类型","广告主","产品","运营","销售",requestBody.getString("todayDate"),requestBody.getString("yesterdayDate"),"消耗差"};
+            OutputStream os = response.getOutputStream();
+            ExportExcelUtils eeu = new ExportExcelUtils();
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            eeu.exportExcel(workbook, 0, "媒介报表", headers, excelList);
+            HttpUtils.setResponseHeader(response, "媒介报表.xlsx");
+            workbook.write(os);
+            os.flush();
+            os.close();
+        }catch (IOException e){
+            log.error(e.getMessage());
+            result.setSuccess(false);
+        }
+
+        return result;
+    }
+
+
+
+
+
+
+
+
+
+
 }

+ 45 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProductController.java

@@ -19,6 +19,7 @@ import cn.com.ctop.manage.modules.actor.service.IActorVideoService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -65,6 +66,11 @@ public class ProductController {
             HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/getProjectListByAdvertiserId 方法开始");
         Result<List<Project>> result = new Result();
+        if(dto == null || dto.getAdvertiserId() ==null ){
+            result.setSuccess(false);
+            result.setMessage("advertiserId不能为空");
+            return result;
+        }
 
         try {
             List<Project> projectList = productService.getProjectListByAdvertiserId(dto.getAdvertiserId());
@@ -85,8 +91,13 @@ public class ProductController {
     @RequestMapping(value = "/getSaleAndYunyingListByProjectIds")
     public Result<Map<String, Object>> getSaleAndYunyingListByProjectIds(@RequestBody ProductInfoDto dto,
                                                               HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getProjectListByAdvertiserId 方法开始");
+        log.info("/ctop/product/getSaleAndYunyingListByProjectIds 方法开始");
         Result<Map<String, Object>> result = new Result();
+        if(dto == null || dto.getProjectIds() ==null || dto.getProjectIds().size() ==0 ){
+            result.setSuccess(false);
+            result.setMessage("projectIds不能为空");
+            return result;
+        }
 
         try {
             Map<String, Object> map = productService.getSaleAndYunyingListByProjectIds(dto.getProjectIds());
@@ -96,7 +107,7 @@ public class ProductController {
             result.setSuccess(false);
             result.setMessage("error");
         }finally{
-            log.info("/ctop/product/getProjectListByAdvertiserId 方法结束");
+            log.info("/ctop/product/getSaleAndYunyingListByProjectIds 方法结束");
         }
 
         return result;
@@ -108,6 +119,11 @@ public class ProductController {
     public Result deleteProduct(@RequestBody ProductInfoDto dto,HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/deleteProduct 方法开始");
         Result result = new Result();
+        if(dto == null || dto.getProductId() ==null ){
+            result.setSuccess(false);
+            result.setMessage("productId不能为空");
+            return result;
+        }
 
         try {
             productService.deleteProduct(dto.getProductId());
@@ -148,6 +164,11 @@ public class ProductController {
     public Result<Map<String, Object>> getProductInfo(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/getProductInfo 方法开始");
         Result<Map<String, Object>> result = new Result();
+        if(dto==null || dto.getProductId() == null){
+            result.setSuccess(false);
+            result.setMessage("productId不能为空");
+            return result;
+        }
 
         try {
             Map<String, Object> productInfo = productService.getProductInfo(dto.getProductId());
@@ -169,6 +190,11 @@ public class ProductController {
     public Result deleteByProjectIdAndProductId(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/deleteByProjectIdAndProductId 方法开始");
         Result result = new Result();
+        if(dto==null || dto.getProductId() == null || dto.getProjectId() ==null){
+            result.setSuccess(false);
+            result.setMessage("productId,projectId不能为空");
+            return result;
+        }
 
         try {
             productService.deleteByProjectIdAndProductId(dto.getProjectId(), dto.getProductId());
@@ -189,6 +215,11 @@ public class ProductController {
     public Result<List<ProjectVO>> getProjectListByProductId(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/getProjectListByProductId 方法开始");
         Result<List<ProjectVO>> result = new Result();
+        if(dto==null || dto.getProductId() == null){
+            result.setSuccess(false);
+            result.setMessage("productId,projectId不能为空");
+            return result;
+        }
 
         try {
             List<ProjectVO> projectListByProductId = productService.getProjectListByProductId(dto.getProductId());
@@ -207,12 +238,16 @@ public class ProductController {
     //产品列表
     @ResponseBody
     @RequestMapping(value = "/getProductList")
-    public Result<List<ProductVO>> getProductList(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
+    public Result<PageInfo<ProductVO>> getProductList(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/getProductList 方法开始");
-        Result<List<ProductVO>> result = new Result();
+        Result<PageInfo<ProductVO>> result = new Result();
+        if(dto==null || dto.getPageNum() == 0 || dto.getPageSize() ==0){
+            dto.setPageNum(1);
+            dto.setPageSize(10);
+        }
 
         try {
-            List<ProductVO> productList = productService.getProductList(dto.getAdvertiserName(), dto.getProductName(), dto.getPageNum(), dto.getPageSize());
+            PageInfo<ProductVO> productList = productService.getProductList(dto.getAdvertiserName(), dto.getProductName(), dto.getPageNum(), dto.getPageSize());
             result.setResult(productList);
         }catch (Exception e){
             log.error(e.getMessage());
@@ -231,6 +266,11 @@ public class ProductController {
     public Result insertProductProjectMap(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
         log.info("/ctop/product/insertProductProjectMap 方法开始");
         Result result = new Result();
+        if(dto==null || dto.getProductId() == null || dto.getProjectIds() == null){
+            result.setSuccess(false);
+            result.setMessage("productId,projectIds不能为空");
+            return result;
+        }
 
         try {
             productService.insertProductProjectMap(dto.getProductId(), dto.getProjectIds());
@@ -256,5 +296,4 @@ public class ProductController {
 
 
 
-
 }

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.mapper;
 
+import cn.com.ctop.common.module.entity.Product;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,4 +18,11 @@ public interface MediaReportMapper {
 
     List<JSONObject> queryAgentReportBy(@Param("todayDate") String todayDate ,@Param("yesterdayDate") String yesterdayDate);
 
+    //快手媒介报表
+    List<JSONObject> kuaishouMediaReport(@Param("today") String today ,@Param("yesterday") String yesterday,@Param("advertiserId") String advertiserId, @Param("companyId")String companyId, @Param("productId")Long productId);
+    //头条媒介报表
+    List<JSONObject> toutiaoMediaReport(@Param("today") String today ,@Param("yesterday") String yesterday, @Param("advertiserId") String advertiserId, @Param("companyId")String companyId, @Param("productId")Long productId);
+
+    List<Product> getAllProductList();
+
 }

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

@@ -264,4 +264,223 @@
                           GROUP by advertiserName, projectName) as r) as e
         ORDER BY sumCost desc
     </select>
+
+    <!-- 快手 -->
+    <select id="kuaishouMediaReport" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        mediaType,
+        advertiserName,
+        productName,
+        sale,
+        operator,
+        todayCost,
+        yesterdayCost,
+        ( todayCost - yesterdayCost ) AS diffCost,
+        companyName
+        FROM
+                (
+                    SELECT
+                    a.media_id AS mediaType,
+                    a.advertiser_name AS advertiserName,
+                    a.product_name AS productName,
+                    (
+                        SELECT
+                            GROUP_CONCAT( DISTINCT o.realname )
+                        FROM
+                            ctop_product_project_map m
+                            LEFT JOIN ctop_project n ON m.project_id = n.id
+                            LEFT JOIN sys_user o ON n.sale_id = o.id
+                        WHERE
+                            m.product_id = a.id
+                    ) AS sale,
+                    (
+                        SELECT
+                            GROUP_CONCAT( DISTINCT al.user_name )
+                        FROM
+                            ( SELECT * FROM ctop_user_allocation GROUP BY account_id ) al
+                            LEFT JOIN user_company co ON al.user_id = co.user_id
+                        WHERE
+                            al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                            AND co.company_id = d.company_id
+                    ) AS operator,
+                    IFNULL(
+                            (
+                                SELECT
+                                    sum( charge )
+                                FROM
+                                    ctop_kuaishou_report_daily_account report
+                                WHERE
+                                    report.account_id IN (
+                                SELECT
+                                    account_id
+                                FROM
+                                    ( SELECT * FROM ctop_user_allocation GROUP BY account_id ) al
+                                    LEFT JOIN user_company co ON al.user_id = co.user_id
+                                WHERE
+                                    al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                                    AND co.company_id = d.company_id
+                                    )
+                                    AND report.stat_date = #{today}
+                            )
+                    ,0) AS todayCost,
+                    IFNULL(
+                            (
+                                SELECT
+                                    sum( charge )
+                                FROM
+                                    ctop_kuaishou_report_daily_account report
+                                WHERE
+                                    report.account_id IN (
+                                SELECT
+                                    account_id
+                                FROM
+                                    ctop_user_allocation al
+                                    LEFT JOIN user_company co ON al.user_id = co.user_id
+                                WHERE
+                                    al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                                    AND co.company_id = d.company_id
+                                    )
+                                    AND report.stat_date = #{yesterday}
+                             )
+                        ,0) AS yesterdayCost,
+                    d.company_name AS companyName
+                    FROM
+                        ctop_product a
+                        LEFT JOIN ctop_product_project_map b ON a.id = b.product_id
+                        LEFT JOIN ( SELECT * FROM ctop_user_allocation GROUP BY account_id ) c ON b.project_id = c.project_id
+                        LEFT JOIN user_company d ON c.user_id = d.user_id
+                    WHERE
+                        d.company_id IS NOT NULL
+                        AND a.media_id = 2
+                        <if test="advertiserId != null and advertiserId != ''">
+                        AND a.advertiser_id = #{advertiserId}
+                        </if>
+                        <if test="companyId != null and companyId != ''">
+                            AND d.company_id = #{companyId}
+                        </if>
+                        <if test="productId != null and productId != ''">
+                            AND a.id = #{productId}
+                        </if>
+                    GROUP BY
+                        a.id,
+                        d.company_id
+                ) t
+        ORDER BY
+            t.todayCost DESC
+    </select>
+
+    <select id="toutiaoMediaReport" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        mediaType,
+        advertiserName,
+        productName,
+        sale,
+        operator,
+        todayCost,
+        yesterdayCost,
+        ( todayCost - yesterdayCost ) AS diffCost,
+        companyName
+        FROM
+            (
+                SELECT
+                    a.media_id AS mediaType,
+                    a.advertiser_name AS advertiserName,
+                    a.product_name AS productName,
+                    (
+                SELECT
+                    GROUP_CONCAT( DISTINCT o.realname )
+                FROM
+                    ctop_product_project_map m
+                    LEFT JOIN ctop_project n ON m.project_id = n.id
+                    LEFT JOIN sys_user o ON n.sale_id = o.id
+                WHERE
+                    m.product_id = a.id
+                    ) AS sale,
+                    (
+                SELECT
+                    GROUP_CONCAT( DISTINCT al.user_name )
+                FROM
+                    ctop_user_allocation al
+                    LEFT JOIN user_company co ON al.user_id = co.user_id
+                WHERE
+                    al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                    AND co.company_id = d.company_id
+                    ) AS operator,
+                    IFNULL(
+                    (
+                SELECT
+                    sum( cost )
+                FROM
+                    ctop_bytedance_report_advertiser_daily report
+                WHERE
+                    report.advertiser_id IN (
+                SELECT
+                    account_id
+                FROM
+                    ctop_user_allocation al
+                    LEFT JOIN user_company co ON al.user_id = co.user_id
+                WHERE
+                    al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                    AND co.company_id = d.company_id
+                    )
+                    AND date_format( report.stat_datetime, '%Y-%m-%d' ) = #{today}
+                    ),
+                    0
+                    ) AS todayCost,
+                    IFNULL(
+                            (
+                        SELECT
+                            sum( cost )
+                        FROM
+                            ctop_bytedance_report_advertiser_daily report
+                        WHERE
+                            report.advertiser_id IN (
+                                SELECT
+                                    account_id
+                                FROM
+                                    ctop_user_allocation al
+                                    LEFT JOIN user_company co ON al.user_id = co.user_id
+                                WHERE
+                                    al.project_id IN ( SELECT project_id FROM ctop_product_project_map map WHERE map.product_id = a.id )
+                                    AND co.company_id = d.company_id
+                            )
+                            AND date_format( report.stat_datetime, '%Y-%m-%d' ) = #{yesterday}
+                            ),0) AS yesterdayCost,
+                    d.company_name AS companyName
+                FROM
+                    ctop_product a
+                    LEFT JOIN ctop_product_project_map b ON a.id = b.product_id
+                    LEFT JOIN ( SELECT * FROM ctop_user_allocation GROUP BY account_id ) c ON b.project_id = c.project_id
+                    LEFT JOIN user_company d ON c.user_id = d.user_id
+                WHERE
+                    d.company_id IS NOT NULL
+                    AND a.media_id = 1
+                    <if test="advertiserId != null and advertiserId != ''">
+                        AND a.advertiser_id = #{advertiserId}
+                    </if>
+                    <if test="companyId != null and companyId != ''">
+                        AND a.company_id = #{companyId}
+                    </if>
+                    <if test="productId != null and productId != ''">
+                        AND a.id = #{productId}
+                    </if>
+                GROUP BY
+                    a.id,
+                    d.company_id
+            ) t
+        ORDER BY t.todayCost DESC
+
+    </select>
+
+    <select id="getAllProductList" resultType="cn.com.ctop.common.module.entity.Product">
+        select
+        id as id,
+        product_name as productName,
+        media_id as mediaId
+        from
+        ctop_product
+        where
+        product_status = 1
+    </select>
+
 </mapper>

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.service;
 
+import cn.com.ctop.common.module.entity.Product;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 
@@ -11,6 +12,8 @@ public interface IMediaReportService {
 
     List<JSONObject> queryProjectNameByAdvertiserId(String advertiserId);
 
+    List<Product> getAllProductList();
+
     PageInfo<JSONObject> queryReportByCondition(int pageNo,int pageSize,JSONObject requestBody);
 
     PageInfo<JSONObject> queryAllReportByCondition(int pageNo,int pageSize,JSONObject requestBody);
@@ -19,5 +22,11 @@ public interface IMediaReportService {
 
     List<JSONObject> queryReportByCondition(JSONObject requestBody);
 
+    PageInfo<JSONObject> mediaReport(int pageNum, int pageSize, JSONObject requestBody);
+
+    //PageInfo<JSONObject> toutiaoMediaReport(int pageNum, int pageSize, JSONObject requestBody);
+
+    List<JSONObject> exportMediaReportExcel(JSONObject requestBody);
+
 
 }

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

@@ -1,13 +1,16 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import cn.com.ctop.common.module.entity.Product;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.ctop.mapper.MediaReportMapper;
 import org.jeecg.modules.ctop.service.IMediaReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -27,6 +30,12 @@ public class MediaReportServiceImpl implements IMediaReportService {
     }
 
     @Override
+    public List<Product> getAllProductList(){
+        return mediaReportMapper.getAllProductList();
+    }
+
+
+    @Override
     public PageInfo<JSONObject> queryReportByCondition(int pageNO, int pageSize, JSONObject requestBody) {
         PageInfo<JSONObject> pageInfo;
         if(requestBody.getString("companyId").equals("6weq589875c040119adst08751712368")){
@@ -114,4 +123,73 @@ public class MediaReportServiceImpl implements IMediaReportService {
         }
         return result;
     }
+
+
+    //@Override
+    //public PageInfo<JSONObject> toutiaoMediaReport(int pageNum, int pageSize, JSONObject requestBody) {
+    //    String today = requestBody.getString("todayDate");
+    //    Date todayDate = DateUtils.parseDate(today, "yyyy-MM-dd");
+    //    Date yesterdayDate = DateUtils.addDay(todayDate, -1);
+    //    String yesterday = DateUtils.formatDate(yesterdayDate);
+    //
+    //    String advertiserId = requestBody.getString("advertiserId");
+    //    String companyId = requestBody.getString("companyId");
+    //
+    //    PageHelper.startPage(pageNum, pageSize);
+    //    List<JSONObject> jsonObjectList = mediaReportMapper.toutiaoMediaReport(today, yesterday, advertiserId, companyId);
+    //
+    //    return new PageInfo<JSONObject>(jsonObjectList);
+    //}
+
+
+    @Override
+    public PageInfo<JSONObject> mediaReport(int pageNum, int pageSize, JSONObject requestBody) {
+        String today = requestBody.getString("todayDate");
+        Date todayDate = DateUtils.parseDate(today, "yyyy-MM-dd");
+        Date yesterdayDate = DateUtils.addDay(todayDate, -1);
+        String yesterday = DateUtils.formatDate(yesterdayDate);
+
+        String advertiserId = requestBody.getString("advertiserId");
+        String companyId = requestBody.getString("companyId");
+        Long productId = requestBody.getLong("productId");
+
+        Integer mediaType = requestBody.getInteger("mediaType");
+
+        List<JSONObject> jsonObjectList = null;
+        if(mediaType == 1){
+            PageHelper.startPage(pageNum, pageSize);
+            jsonObjectList = mediaReportMapper.toutiaoMediaReport(today, yesterday, advertiserId, companyId, productId);
+        }else if(mediaType == 2){
+            PageHelper.startPage(pageNum, pageSize);
+            jsonObjectList = mediaReportMapper.kuaishouMediaReport(today, yesterday, advertiserId, companyId, productId);
+        }
+
+        return new PageInfo<JSONObject>(jsonObjectList);
+    }
+
+    @Override
+    public List<JSONObject> exportMediaReportExcel(JSONObject requestBody) {
+        String today = requestBody.getString("todayDate");
+        Date todayDate = DateUtils.parseDate(today, "yyyy-MM-dd");
+        Date yesterdayDate = DateUtils.addDay(todayDate, -1);
+        String yesterday = DateUtils.formatDate(yesterdayDate);
+
+        String advertiserId = requestBody.getString("advertiserId");
+        String companyId = requestBody.getString("companyId");
+        Long productId = requestBody.getLong("productId");
+
+        Integer mediaType = requestBody.getInteger("mediaType");
+
+        if(mediaType == 2){
+            return mediaReportMapper.kuaishouMediaReport(today, yesterday, advertiserId, companyId, productId);
+        }else if(mediaType == 1){
+            return mediaReportMapper.kuaishouMediaReport(today, yesterday, advertiserId, companyId, productId);
+        }
+        return null;
+    }
+
+
+
+
+
 }

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/Product.java

@@ -22,6 +22,8 @@ public class Product {
      */
     private String advertiserId;
 
+    private String advertiserName;
+
     /**
      * 创建人
      */

+ 3 - 1
module-common/src/main/java/cn/com/ctop/common/module/mapper/ProductMapper.java

@@ -12,7 +12,7 @@ import java.util.List;
 
 public interface ProductMapper extends BaseMapper<Product> {
 
-    void insertProduct(@Param("product") ProductVO product);
+    Long insertProduct(@Param("product") ProductVO product);
 
     List<Advertiser> getAdvertiserList();
 
@@ -34,6 +34,8 @@ public interface ProductMapper extends BaseMapper<Product> {
 
     List<ProjectVO> getProjectListByProductId(@Param("productId")Long productId);
 
+    List<Long> getProjectIdsByProductId(@Param("productId")Long productId);
+
     void deleteByProjectIdAndProductId(@Param("productId")Long productId, @Param("projectId")Long projectId);
 
     List<ProductVO> getProductList(@Param("advertiserName")String advertiserName, @Param("productName")String productName);

+ 23 - 9
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/ProductMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.common.module.mapper.ProductMapper">
 
-    <insert id="insertProduct">
+    <insert id="insertProduct" useGeneratedKeys="true" keyProperty="id">
         insert into
         ctop_product
         (
@@ -18,7 +18,7 @@
             #{product.advertiserId},
             #{product.advertiserName},
             #{product.createUserId},
-            #{project.productStatus}
+            1
         )
     </insert>
 
@@ -33,7 +33,8 @@
     <select id="getProjectListByAdvertiserId" resultType="cn.com.ctop.common.module.entity.Project">
         select
         id,
-        project_name as projectName
+        project_name as projectName,
+        media_id as mediaId
         from
         ctop_project
         where
@@ -93,7 +94,7 @@
         ctop_product_project_map
         (
             product_id,
-            project_id,
+            project_id
         )
         values
         <foreach collection="projectIds" item="projectId" separator=",">
@@ -142,6 +143,19 @@
         a.product_id = #{productId}
     </select>
 
+    <select id="getProjectIdsByProductId" resultType="Long">
+        select
+        a.project_id as projectId
+        from
+        ctop_product_project_map a
+        left join ctop_project b on a.project_id = b.id
+        where
+        a.product_id = #{productId}
+    </select>
+
+
+
+
     <select id="deleteByProjectIdAndProductId">
         delete
         from
@@ -166,17 +180,17 @@
         where
         product_status = 1 and
         <if test="advertiserName != null and advertiserName != '' ">
-            advertiser_name like concat('%',advertiserName,'%') and
+            advertiser_name like concat('%', #{advertiserName},'%') and
         </if>
         <if test="productName != null and productName != '' ">
-            product_name like concat('%', productName, '%') and
+            product_name like concat('%', #{productName}, '%') and
         </if>
         1=1
     </select>
 
     <select id="getSalesListByProductId" resultType="cn.com.ctop.common.module.vo.SaleVO">
         select
-        b.sale_id as saleId,
+        distinct b.sale_id as saleId,
         c.realname as saleName
         from
         ctop_product_project_map a
@@ -188,7 +202,7 @@
 
     <select id="getYunyingListByProductId" resultType="cn.com.ctop.common.module.vo.UserDto">
         select
-        user_id as userId,
+        distinct user_id as userId,
         user_name as realname
         from
         ctop_user_allocation a
@@ -197,7 +211,7 @@
         select project_id
         from
         ctop_product_project_map
-        where product_id = #{id}
+        where product_id = #{productId}
         )
 
     </select>

+ 2 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/IProductService.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.vo.ProductVO;
 import cn.com.ctop.common.module.vo.ProjectVO;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
 
 import java.util.List;
 import java.util.Map;
@@ -37,7 +38,7 @@ public interface IProductService extends IService<Product> {
 
     List<ProjectVO> getProjectListByProductId(Long productId);
 
-    List<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize);
+    PageInfo<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize);
 
 
 

+ 20 - 8
module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProductServiceImpl.java

@@ -8,11 +8,11 @@ import cn.com.ctop.common.module.service.IProductService;
 import cn.com.ctop.common.module.vo.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
-import org.apache.shiro.SecurityUtils;
-import org.jeecg.common.system.vo.LoginUser;
+import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -62,13 +62,13 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             //}
             productMapper.updateProduct(product);
         }else { //入库
+            //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            //product.setCreateUserId(sysUser.getId());
+            productMapper.insertProduct(product);
+
             if(product.getProjectIds() != null && product.getProjectIds().size() != 0 ){
                 productMapper.insertProductProjectMap(product.getProjectIds(), product.getId());
             }
-
-            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-            product.setCreateUserId(sysUser.getId());
-            productMapper.insertProduct(product);
         }
     }
 
@@ -84,6 +84,16 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
         Product product = productMapper.getProductInfo(productId);
         List<ProjectVO> projectList = productMapper.getProjectListByProductId(productId);
 
+        List<Long> projectIds = new ArrayList<>();
+        for(ProjectVO vo:projectList){
+            projectIds.add(vo.getProjectId());
+        }
+
+        List<ProductDto> saleList = productMapper.getSaleListByProjectIds(projectIds);
+        List<ProductDto> yunyingeList = productMapper.getYunyingListByProjectIds(projectIds);
+
+        map.put("saleList",saleList);
+        map.put("yunyingList",yunyingeList);
         map.put("product",product);
         map.put("projectList",projectList);
 
@@ -101,7 +111,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
     @Override
-    public List<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize){
+    public PageInfo<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize){
         PageHelper.startPage(pageNum, pageSize);
         List<ProductVO> productList = productMapper.getProductList(advertiserName, productName);
 
@@ -109,13 +119,15 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             List<ProjectVO> projectListByProductId = productMapper.getProjectListByProductId(product.getId());
             List<SaleVO> salesListByProductId = productMapper.getSalesListByProductId(product.getId());
             List<UserDto> yunyingListByProductId = productMapper.getYunyingListByProductId(product.getId());
+            List<Long> projectIds = productMapper.getProjectIdsByProductId(product.getId());
 
+            product.setProjectIds(projectIds);
             product.setProjectList(projectListByProductId);
             product.setSaleList(salesListByProductId);
             product.setYunyingList(yunyingListByProductId);
         }
 
-        return productList;
+        return new PageInfo<>(productList);
 
     }
 

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/vo/ProductInfoDto.java

@@ -23,4 +23,6 @@ public class ProductInfoDto extends PageInfo implements Serializable {
 
     private String productName;
 
+    private Integer mediaId;
+
 }

+ 1 - 0
module-common/src/main/java/cn/com/ctop/common/module/vo/ProductVO.java

@@ -22,6 +22,7 @@ public class ProductVO {
      * 广告主id
      */
     private String advertiserId;
+    private String advertiserName;
 
     /**
      * 创建人