Browse Source

产品专题广告投放排名

yufeng 3 years ago
parent
commit
6d3ec2b068

+ 20 - 0
src/main/java/com/ylcm/sys/controller/SpecialAnalysisController.java

@@ -1,5 +1,7 @@
1 1
 package com.ylcm.sys.controller;
2 2
 
3
+import java.util.List;
4
+
3 5
 import javax.annotation.Resource;
4 6
 import javax.servlet.http.HttpServletResponse;
5 7
 
@@ -12,6 +14,7 @@ import com.ylcm.sys.common.Constants;
12 14
 import com.ylcm.sys.form.AdSpecialAnalysisQueryForm;
13 15
 import com.ylcm.sys.service.SpecialAnalysisService;
14 16
 import com.ylcm.sys.vo.AdSpecialAnalysisVO;
17
+import com.ylcm.sys.vo.AdSpecialTopVO;
15 18
 
16 19
 import lombok.extern.slf4j.Slf4j;
17 20
 import net.sf.json.JSONObject;
@@ -48,4 +51,21 @@ public class SpecialAnalysisController extends BaseController{
48 51
 			ajaxJson("{\"code\":\"0\",\"msg\":\"获取列表失败\"}", response);
49 52
 		}
50 53
 	}
54
+	
55
+	//产品专题广告投放排名
56
+	@RequestMapping(value = "/list_special_product_rank.do")
57
+	public void list_special_product_rank(HttpServletResponse response, Integer type, String startDate, String endDate) {
58
+		try {
59
+			
60
+			List<AdSpecialTopVO> list = specialAnalysisService.specialTop(type, startDate, endDate);
61
+			
62
+			JSONObject jsonobj = new JSONObject();
63
+			jsonobj.put("data", list);
64
+			jsonobj.put("code", Constants.CODE_SUCCESS);
65
+			ajaxJson(jsonobj.toString(), response);
66
+		} catch (Exception e) {
67
+			log.error(e.getMessage(), e);
68
+			ajaxJson("{\"code\":\"0\",\"msg\":\"获取列表失败\"}", response);
69
+		}
70
+	}
51 71
 }

+ 10 - 0
src/main/java/com/ylcm/sys/mapper/AdSpecialMapper.java

@@ -1,5 +1,7 @@
1 1
 package com.ylcm.sys.mapper;
2 2
 
3
+import java.util.List;
4
+
3 5
 import org.apache.ibatis.annotations.Param;
4 6
 
5 7
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
7 9
 import com.ylcm.sys.domain.AdSpecial;
8 10
 import com.ylcm.sys.form.AdSpecialAnalysisQueryForm;
9 11
 import com.ylcm.sys.vo.AdSpecialAnalysisVO;
12
+import com.ylcm.sys.vo.AdSpecialTopVO;
10 13
 
11 14
 /**
12 15
  * <p>
@@ -19,4 +22,11 @@ import com.ylcm.sys.vo.AdSpecialAnalysisVO;
19 22
 public interface AdSpecialMapper extends BaseMapper<AdSpecial> {
20 23
 
21 24
 	IPage<AdSpecialAnalysisVO> getPage(IPage<AdSpecial> page, @Param("queryBean") AdSpecialAnalysisQueryForm analysisQueryForm);
25
+	
26
+	/**
27
+	 * 产品专题广告投放排名
28
+	 * @param type
29
+	 * @return
30
+	 */
31
+	List<AdSpecialTopVO> specialTop(@Param("type") Integer type, @Param("startDate") String startDate, @Param("endDate") String endDate);
22 32
 }

+ 9 - 0
src/main/java/com/ylcm/sys/service/SpecialAnalysisService.java

@@ -1,8 +1,11 @@
1 1
 package com.ylcm.sys.service;
2 2
 
3
+import java.util.List;
4
+
3 5
 import com.baomidou.mybatisplus.core.metadata.IPage;
4 6
 import com.ylcm.sys.form.AdSpecialAnalysisQueryForm;
5 7
 import com.ylcm.sys.vo.AdSpecialAnalysisVO;
8
+import com.ylcm.sys.vo.AdSpecialTopVO;
6 9
 
7 10
 
8 11
 public interface SpecialAnalysisService {
@@ -12,4 +15,10 @@ public interface SpecialAnalysisService {
12 15
 	 * @return
13 16
 	 */
14 17
 	IPage<AdSpecialAnalysisVO> page(AdSpecialAnalysisQueryForm queryForm);
18
+	
19
+	/**
20
+	 * 专题top30
21
+	 * @param type 0产品 1栏目
22
+	 */
23
+	List<AdSpecialTopVO> specialTop(Integer type, String startDate, String endDate);
15 24
 }

+ 9 - 0
src/main/java/com/ylcm/sys/service/impl/SpecialAnalysisServiceImpl.java

@@ -1,5 +1,7 @@
1 1
 package com.ylcm.sys.service.impl;
2 2
 
3
+import java.util.List;
4
+
3 5
 import javax.annotation.Resource;
4 6
 
5 7
 import org.springframework.stereotype.Service;
@@ -11,6 +13,7 @@ import com.ylcm.sys.form.AdSpecialAnalysisQueryForm;
11 13
 import com.ylcm.sys.mapper.AdSpecialMapper;
12 14
 import com.ylcm.sys.service.SpecialAnalysisService;
13 15
 import com.ylcm.sys.vo.AdSpecialAnalysisVO;
16
+import com.ylcm.sys.vo.AdSpecialTopVO;
14 17
 
15 18
 @Service
16 19
 public class SpecialAnalysisServiceImpl implements SpecialAnalysisService {
@@ -23,5 +26,11 @@ public class SpecialAnalysisServiceImpl implements SpecialAnalysisService {
23 26
 		return adSpecialMapper.getPage(new Page<AdSpecial>(queryForm.getPageNo(), queryForm.getPageSize()), queryForm);
24 27
 	}
25 28
 
29
+	@Override
30
+	public List<AdSpecialTopVO> specialTop(Integer type, String startDate, String endDate) {
31
+		return adSpecialMapper.specialTop(type, startDate, endDate);
32
+	}
33
+
34
+	
26 35
 	
27 36
 }

+ 52 - 0
src/main/java/com/ylcm/sys/task/SpecialTopTask.java

@@ -0,0 +1,52 @@
1
+package com.ylcm.sys.task;
2
+
3
+import java.time.LocalDate;
4
+import java.time.format.DateTimeFormatter;
5
+
6
+import org.springframework.scheduling.annotation.Scheduled;
7
+import org.springframework.stereotype.Component;
8
+
9
+import com.ylcm.sys.service.SpecialAnalysisService;
10
+
11
+import lombok.extern.slf4j.Slf4j;
12
+
13
+@Component
14
+@Slf4j
15
+public class SpecialTopTask {
16
+
17
+	private SpecialAnalysisService specialAnalysisService;
18
+	/**
19
+	 * 一周的每天运行 产品专题广告投放排名
20
+	 */
21
+	@Scheduled(cron = "0 0 0/2 * * ?")
22
+	public void topTaskWeek(){
23
+		log.info("产品专题广告投放排名---start");
24
+		LocalDate now = LocalDate.now();
25
+		LocalDate day7before = now.minusDays(7);
26
+		specialAnalysisService.specialTop(0, now.format(DateTimeFormatter.ISO_DATE), day7before.format(DateTimeFormatter.ISO_DATE));
27
+		specialAnalysisService.specialTop(1, now.format(DateTimeFormatter.ISO_DATE), day7before.format(DateTimeFormatter.ISO_DATE));
28
+		log.info("产品专题广告投放排名---end");
29
+	}
30
+	
31
+	/**
32
+	 * 月的每天运行一次
33
+	 */
34
+	@Scheduled(cron = "0 0 1 * * ?")
35
+	public void topTaskMonth(){
36
+		log.info("产品专题广告投放排名---start");
37
+		LocalDate now = LocalDate.now();
38
+		LocalDate day7before = now.minusDays(30);
39
+		specialAnalysisService.specialTop(0, now.format(DateTimeFormatter.ISO_DATE), day7before.format(DateTimeFormatter.ISO_DATE));
40
+		specialAnalysisService.specialTop(1, now.format(DateTimeFormatter.ISO_DATE), day7before.format(DateTimeFormatter.ISO_DATE));
41
+		
42
+		LocalDate day365before = now.minusDays(365);
43
+		specialAnalysisService.specialTop(0, now.format(DateTimeFormatter.ISO_DATE), day365before.format(DateTimeFormatter.ISO_DATE));
44
+		specialAnalysisService.specialTop(1, now.format(DateTimeFormatter.ISO_DATE), day365before.format(DateTimeFormatter.ISO_DATE));
45
+		
46
+		log.info("产品专题广告投放排名---end");
47
+	}
48
+	
49
+	
50
+	
51
+	
52
+}

+ 20 - 0
src/main/java/com/ylcm/sys/vo/AdSpecialTopVO.java

@@ -0,0 +1,20 @@
1
+package com.ylcm.sys.vo;
2
+
3
+import io.swagger.annotations.ApiModelProperty;
4
+import lombok.Data;
5
+
6
+@Data
7
+public class AdSpecialTopVO {
8
+
9
+	@ApiModelProperty("产品/栏目名")
10
+	private String productName;
11
+	
12
+	@ApiModelProperty("一级行业")
13
+	private String firstInd;
14
+	
15
+	@ApiModelProperty("频次")
16
+	private Integer frequency;
17
+	
18
+	@ApiModelProperty("时长")
19
+	private Integer duration;
20
+}

+ 21 - 0
src/main/resource/mapper/AdSpecialMapper.xml

@@ -38,5 +38,26 @@
38 38
     		</if>
39 39
     	</where>
40 40
     </select>
41
+    
42
+    <select id="specialTop" resultType="com.ylcm.sys.vo.AdSpecialTopVO">
43
+    	SELECT 
44
+    		product_name,sum(show_duration) show_duration,SUM(1) frequency
45
+		FROM
46
+			ad_special
47
+		<where>
48
+			<if test="type != null">
49
+				AND type = 0
50
+			</if>
51
+			<if test="startDate != null and startDate != ''">
52
+				AND show_date >= #{startDate}
53
+			</if>
54
+			<if test="endDate != null and endDate != ''">
55
+				AND #{endDate} >= show_date
56
+			</if>
57
+		</where> 
58
+
59
+		GROUP BY product_name
60
+		ORDER BY sum(show_duration) DESC LIMIT 30
61
+    </select>
41 62
 
42 63
 </mapper>

+ 2 - 2
src/main/webapp/static/js/analysis/special_analysis.js

@@ -410,7 +410,7 @@ function getDoubanChart(type){
410 410
 
411 411
 
412 412
 /**
413
- * 节目及品牌软性广告投放排名
413
+ * 产品专题广告投放排名
414 414
  */
415 415
 function getRankList(type){
416 416
 	var data = {
@@ -419,7 +419,7 @@ function getRankList(type){
419 419
 			"beginDate": $("#start_time").val(),
420 420
 			"endDate": $("#end_time").val()
421 421
 		},html="";
422
-	ajax("list_program_brand_rank.do",data,function(res){
422
+	ajax("list_special_product_rank.do",data,function(res){
423 423
 		if(res.code == 1 && res.data){
424 424
 			if(res.data.programRankList.length > 0){
425 425
 				var list = sortProgramRankList(res.data.programRankList,program_arr);