Commit 0fe13b58 0fe13b58929a62f7c38aa9cc4490a4998c463701 by 张云鹏

专题数据统计

1 parent 9d6228fa
Showing 48 changed files with 314 additions and 1864 deletions
1 package com.topdraw.business.config;
2
3 public class Constant {
4
5 public final String SUBJECT_PV = "SUBJECT_PV";
6 public final String SUBJECT_UV = "SUBJECT_UV";
7
8 public final String SUBJECT_BTN_CLICK_PV = "SUBJECT_BTN_CLICK_PV";
9 public final String SUBJECT_BTN_CLICK_UV = "SUBJECT_BTN_CLICK_UV";
10
11 }
...@@ -20,7 +20,7 @@ import java.sql.Timestamp; ...@@ -20,7 +20,7 @@ import java.sql.Timestamp;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_tpl_param_click") 23 @Table(name="sub_tpl_param_click")
24 public class ActTplParamClick implements Serializable { 24 public class ActTplParamClick implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,12 @@ public class ActTplParamClick implements Serializable { ...@@ -29,13 +29,12 @@ public class ActTplParamClick implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 // subject id
33 @Column(name = "marketing_activity_id", nullable = false) 33 @Column(name = "subject_id", nullable = false)
34 private Long marketingActivityId; 34 private Long subjectId;
35 35
36 // 活动事件id 36 @Column(name = "subject_code", nullable = false)
37 @Column(name = "activity_id", nullable = false) 37 private String subjectCode;
38 private Long activityId;
39 38
40 // 活动按钮id 39 // 活动按钮id
41 @Column(name = "template_param_value_id", nullable = false) 40 @Column(name = "template_param_value_id", nullable = false)
...@@ -53,6 +52,12 @@ public class ActTplParamClick implements Serializable { ...@@ -53,6 +52,12 @@ public class ActTplParamClick implements Serializable {
53 @Column(name = "uv", nullable = false) 52 @Column(name = "uv", nullable = false)
54 private Integer uv; 53 private Integer uv;
55 54
55 @Column(name = "lp_id")
56 private Long lpId;
57
58 @Column(name = "site_id")
59 private Long siteId;
60
56 // 创建时间 61 // 创建时间
57 @CreatedDate 62 @CreatedDate
58 @Column(name = "create_time") 63 @Column(name = "create_time")
......
...@@ -12,5 +12,5 @@ import java.util.Optional; ...@@ -12,5 +12,5 @@ import java.util.Optional;
12 */ 12 */
13 public interface ActivityBtnPvUvRepository extends JpaRepository<ActTplParamClick, Long>, JpaSpecificationExecutor<ActTplParamClick> { 13 public interface ActivityBtnPvUvRepository extends JpaRepository<ActTplParamClick, Long>, JpaSpecificationExecutor<ActTplParamClick> {
14 14
15 Optional<ActTplParamClick> findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId); 15 Optional<ActTplParamClick> findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId);
16 } 16 }
......
...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvService { ...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvService {
12 12
13 void update(ActTplParamClick resources); 13 void update(ActTplParamClick resources);
14 14
15 ActTplParamClick findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId); 15 ActTplParamClick findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId);
16 } 16 }
......
1 package com.topdraw.business.module.activitybtn.all.service.dto;
2
3 import lombok.Data;
4
5 import javax.persistence.Column;
6 import java.io.Serializable;
7 import java.sql.Timestamp;
8
9
10 /**
11 * @author XiangHan
12 * @date 2022-02-26
13 */
14 @Data
15 public class ActTplParamClickDTO implements Serializable {
16
17 // ID
18 private Long id;
19
20 // 营销活动ID
21 private Long marketingActivityId;
22
23 // 活动事件id
24 private Long activityId;
25
26 // 活动按钮id
27 private Long templateParamValueId;
28
29 // 显示用名称,表示哪个按钮或者内容
30 private String name;
31
32 // pv值
33 private Long pv;
34
35 // uv值
36 private Long uv;
37
38 // 创建时间
39 private Timestamp createTime;
40
41 // 更新时间
42 private Timestamp updateTime;
43 }
...@@ -36,8 +36,8 @@ public class ActivityBtnPvUvServiceImpl implements ActivityBtnPvUvService { ...@@ -36,8 +36,8 @@ public class ActivityBtnPvUvServiceImpl implements ActivityBtnPvUvService {
36 } 36 }
37 37
38 @Override 38 @Override
39 public ActTplParamClick findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId) { 39 public ActTplParamClick findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId) {
40 return PvUvRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(marketingActivityId, activityId, templateParamValueId).orElseGet(ActTplParamClick::new); 40 return PvUvRepository.findBySubjectIdAndTemplateParamValueId(subjectId, templateParamValueId).orElseGet(ActTplParamClick::new);
41 } 41 }
42 42
43 } 43 }
......
...@@ -20,7 +20,7 @@ import java.sql.Timestamp; ...@@ -20,7 +20,7 @@ import java.sql.Timestamp;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_tpl_param_click_day") 23 @Table(name="sub_tpl_param_click_day")
24 public class ActTplParamClickDay implements Serializable { 24 public class ActTplParamClickDay implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,13 @@ public class ActTplParamClickDay implements Serializable { ...@@ -29,13 +29,13 @@ public class ActTplParamClickDay implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 // subject id
33 @Column(name = "marketing_activity_id", nullable = false) 33 @Column(name = "subject_id", nullable = false)
34 private Long marketingActivityId; 34 private Long subjectId;
35
36 @Column(name = "subject_code", nullable = false)
37 private String subjectCode;
35 38
36 // 活动事件id
37 @Column(name = "activity_id", nullable = false)
38 private Long activityId;
39 39
40 // 显示用名称,表示哪个按钮或者内容 40 // 显示用名称,表示哪个按钮或者内容
41 @Column(name = "name", nullable = false) 41 @Column(name = "name", nullable = false)
...@@ -57,6 +57,12 @@ public class ActTplParamClickDay implements Serializable { ...@@ -57,6 +57,12 @@ public class ActTplParamClickDay implements Serializable {
57 @Column(name = "uv", nullable = false) 57 @Column(name = "uv", nullable = false)
58 private Integer uv; 58 private Integer uv;
59 59
60 @Column(name = "lp_id")
61 private Long lpId;
62
63 @Column(name = "site_id")
64 private Long siteId;
65
60 // 创建时间 66 // 创建时间
61 @CreatedDate 67 @CreatedDate
62 @Column(name = "create_time") 68 @Column(name = "create_time")
......
...@@ -12,6 +12,6 @@ import java.util.Optional; ...@@ -12,6 +12,6 @@ import java.util.Optional;
12 */ 12 */
13 public interface ActivityBtnPvUvDayRepository extends JpaRepository<ActTplParamClickDay, Long>, JpaSpecificationExecutor<ActTplParamClickDay> { 13 public interface ActivityBtnPvUvDayRepository extends JpaRepository<ActTplParamClickDay, Long>, JpaSpecificationExecutor<ActTplParamClickDay> {
14 14
15 Optional<ActTplParamClickDay> findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long paramValueId, String day); 15 Optional<ActTplParamClickDay> findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long paramValueId, String day);
16 16
17 } 17 }
......
...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvDayService { ...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvDayService {
12 12
13 void update(ActTplParamClickDay resources); 13 void update(ActTplParamClickDay resources);
14 14
15 ActTplParamClickDay findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long templateParamValueId, String toString); 15 ActTplParamClickDay findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long templateParamValueId, String toString);
16 } 16 }
......
1 package com.topdraw.business.module.activitybtn.day.service.dto;
2
3 import lombok.Data;
4
5 import java.io.Serializable;
6 import java.sql.Timestamp;
7
8
9 /**
10 * @author XiangHan
11 * @date 2022-02-26
12 */
13 @Data
14 public class ActTplParamClickDTO implements Serializable {
15
16 // ID
17 private Long id;
18
19 // 营销活动ID
20 private Long marketingActivityId;
21
22 // 活动事件id
23 private Long activityId;
24
25 // 活动按钮id
26 private Long templateParamValueId;
27
28 // 显示用名称,表示哪个按钮或者内容
29 private String name;
30
31 // 日期
32 private String day;
33
34 // pv值
35 private Integer pv;
36
37 // uv值
38 private Integer uv;
39
40 // 创建时间
41 private Timestamp createTime;
42
43 // 更新时间
44 private Timestamp updateTime;
45 }
...@@ -36,9 +36,9 @@ public class ActivityBtnPvUvDayServiceImpl implements ActivityBtnPvUvDayService ...@@ -36,9 +36,9 @@ public class ActivityBtnPvUvDayServiceImpl implements ActivityBtnPvUvDayService
36 } 36 }
37 37
38 @Override 38 @Override
39 public ActTplParamClickDay findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long templateParamValueId, String day) { 39 public ActTplParamClickDay findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long templateParamValueId, String day) {
40 return this.pvUvDayRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(marketingActivityId, 40 return this.pvUvDayRepository.findBySubjectIdAndTemplateParamValueIdAndDay(subjectId,
41 activityId, templateParamValueId, day).orElseGet(ActTplParamClickDay::new); 41 templateParamValueId, day).orElseGet(ActTplParamClickDay::new);
42 } 42 }
43 43
44 44
......
...@@ -20,7 +20,7 @@ import java.sql.Timestamp; ...@@ -20,7 +20,7 @@ import java.sql.Timestamp;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_tpl_param_click_hour") 23 @Table(name="sub_tpl_param_click_hour")
24 public class ActTplParamClickHour implements Serializable { 24 public class ActTplParamClickHour implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,12 @@ public class ActTplParamClickHour implements Serializable { ...@@ -29,13 +29,12 @@ public class ActTplParamClickHour implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 // subject id
33 @Column(name = "marketing_activity_id", nullable = false) 33 @Column(name = "subject_id", nullable = false)
34 private Long marketingActivityId; 34 private Long subjectId;
35 35
36 // 活动事件id 36 @Column(name = "subject_code", nullable = false)
37 @Column(name = "activity_id", nullable = false) 37 private String subjectCode;
38 private Long activityId;
39 38
40 // 显示用名称,表示哪个按钮或者内容 39 // 显示用名称,表示哪个按钮或者内容
41 @Column(name = "name", nullable = false) 40 @Column(name = "name", nullable = false)
...@@ -61,6 +60,12 @@ public class ActTplParamClickHour implements Serializable { ...@@ -61,6 +60,12 @@ public class ActTplParamClickHour implements Serializable {
61 @Column(name = "uv", nullable = false) 60 @Column(name = "uv", nullable = false)
62 private Integer uv; 61 private Integer uv;
63 62
63 @Column(name = "lp_id")
64 private Long lpId;
65
66 @Column(name = "site_id")
67 private Long siteId;
68
64 // 创建时间 69 // 创建时间
65 @CreatedDate 70 @CreatedDate
66 @Column(name = "create_time") 71 @Column(name = "create_time")
......
...@@ -12,5 +12,5 @@ import java.util.Optional; ...@@ -12,5 +12,5 @@ import java.util.Optional;
12 */ 12 */
13 public interface ActivityBtnPvUvHourRepository extends JpaRepository<ActTplParamClickHour, Long>, JpaSpecificationExecutor<ActTplParamClickHour> { 13 public interface ActivityBtnPvUvHourRepository extends JpaRepository<ActTplParamClickHour, Long>, JpaSpecificationExecutor<ActTplParamClickHour> {
14 14
15 Optional<ActTplParamClickHour> findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long activityId, Long paramValueId, String day, int hour); 15 Optional<ActTplParamClickHour> findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long subjectId, Long paramValueId, String day, int hour);
16 } 16 }
......
...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvHourService { ...@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvHourService {
12 12
13 void update(ActTplParamClickHour resources); 13 void update(ActTplParamClickHour resources);
14 14
15 ActTplParamClickHour findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long activityId, Long paramValueId, String day, int hour); 15 ActTplParamClickHour findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long paramValueId, String day, int hour);
16 } 16 }
......
1 package com.topdraw.business.module.activitybtn.hour.service.dto;
2
3 import lombok.Data;
4
5 import javax.persistence.Column;
6 import java.io.Serializable;
7 import java.sql.Timestamp;
8
9
10 /**
11 * @author XiangHan
12 * @date 2022-02-26
13 */
14 @Data
15 public class ActTplParamClickHourDTO implements Serializable {
16
17 // ID
18 private Long id;
19
20 // 营销活动ID
21 private Long marketingActivityId;
22
23 // 活动事件id
24 private Long activityId;
25
26 // 活动按钮id
27 private Long templateParamValueId;
28
29 // 显示用名称,表示哪个按钮或者内容
30 private String name;
31
32 // 日期
33 private String day;
34
35 // 小时(0-23)
36 private Integer hour;
37
38 // pv值
39 private Integer pv;
40
41 // uv值
42 private Integer uv;
43
44 // 创建时间
45 private Timestamp createTime;
46
47 // 更新时间
48 private Timestamp updateTime;
49 }
...@@ -37,10 +37,8 @@ public class ActivityBtnPvUvHourServiceImpl implements ActivityBtnPvUvHourServic ...@@ -37,10 +37,8 @@ public class ActivityBtnPvUvHourServiceImpl implements ActivityBtnPvUvHourServic
37 } 37 }
38 38
39 @Override 39 @Override
40 public ActTplParamClickHour findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, 40 public ActTplParamClickHour findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long subjectId, Long paramValueId, String day, int hour) {
41 Long activityId, Long paramValueId, 41 return PvUvHourRepository.findBySubjectIdAndTemplateParamValueIdAndDayAndHour(subjectId,
42 String day, int hour) {
43 return PvUvHourRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(marketingActivityId, activityId,
44 paramValueId, day, hour). 42 paramValueId, day, hour).
45 orElseGet(ActTplParamClickHour::new); 43 orElseGet(ActTplParamClickHour::new);
46 } 44 }
......
1 package com.topdraw.business.module.subscribe.all.domain;
2
3 import lombok.Data;
4 import lombok.experimental.Accessors;
5 import cn.hutool.core.bean.BeanUtil;
6 import cn.hutool.core.bean.copier.CopyOptions;
7 import javax.persistence.*;
8 import org.springframework.data.annotation.CreatedDate;
9 import org.springframework.data.annotation.LastModifiedDate;
10 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11 import java.sql.Timestamp;
12
13 import java.io.Serializable;
14
15 /**
16 * @author XiangHan
17 * @date 2022-04-20
18 */
19 @Entity
20 @Data
21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true)
23 @Table(name="act_subscribe_pv_uv")
24 public class SubscribePvUv implements Serializable {
25
26 // ID
27 @Id
28 @GeneratedValue(strategy = GenerationType.IDENTITY)
29 @Column(name = "id")
30 private Long id;
31
32 // 营销活动ID
33 @Column(name = "marketing_activity_id", nullable = false)
34 private Long marketingActivityId;
35
36 // 营销活动标识
37 @Column(name = "marketing_activity_code", nullable = false)
38 private String marketingActivityCode;
39
40 // 产品包id
41 @Column(name = "package_id", nullable = false)
42 private String packageId;
43
44 // 产品包标识
45 @Column(name = "package_code")
46 private String packageCode;
47
48 // 产品包名称
49 @Column(name = "package_name")
50 private String packageName;
51
52 // 订购按钮总点击量
53 @Column(name = "btn_click_pv", nullable = false)
54 private Long btnClickPv;
55
56 // 订购按钮总点击人数
57 @Column(name = "btn_click_uv", nullable = false)
58 private Long btnClickUv;
59
60 // 订购成功人数
61 @Column(name = "subscribe_num", nullable = false)
62 private Long subscribeNum;
63
64 // 创建时间
65 @CreatedDate
66 @Column(name = "create_time")
67 private Timestamp createTime;
68
69 // 更新时间
70 @LastModifiedDate
71 @Column(name = "update_time")
72 private Timestamp updateTime;
73
74 public void copy(SubscribePvUv source){
75 BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
76 }
77 }
1 package com.topdraw.business.module.subscribe.all.repository;
2
3 import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
4 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
5 import org.springframework.data.jpa.repository.JpaRepository;
6 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
7
8 import java.util.Optional;
9
10 /**
11 * @author XiangHan
12 * @date 2022-04-20
13 */
14 public interface SubscribePvUvRepository extends JpaRepository<SubscribePvUv, Long>, JpaSpecificationExecutor<SubscribePvUv> {
15
16 Optional<SubscribePvUv> findByMarketingActivityCodeAndPackageId(String code, String packageId);
17 }
1 package com.topdraw.business.module.subscribe.all.service;
2
3 import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
4 import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
5
6 /**
7 * @author XiangHan
8 * @date 2022-04-20
9 */
10 public interface SubscribePvUvService {
11
12 /**
13 * 根据ID查询
14 * @param id ID
15 * @return SubscribePvUvDTO
16 */
17 SubscribePvUvDTO findById(Long id);
18
19 void create(SubscribePvUv resources);
20
21 void update(SubscribePvUv resources);
22
23 void delete(Long id);
24
25 SubscribePvUv findByMarketingActivityCodeAndPackageId(String code, String packageId);
26 }
1 package com.topdraw.business.module.subscribe.all.service.dto;
2
3 import lombok.Data;
4 import java.sql.Timestamp;
5 import java.io.Serializable;
6
7
8 /**
9 * @author XiangHan
10 * @date 2022-04-20
11 */
12 @Data
13 public class SubscribePvUvDTO implements Serializable {
14
15 // ID
16 private Long id;
17
18 // 营销活动ID
19 private Long marketingActivityId;
20
21 // 营销活动标识
22 private String marketingActivityCode;
23
24 // 产品包id
25 private String packageId;
26
27 // 产品包标识
28 private String packageCode;
29
30 // 产品包名称
31 private String packageName;
32
33 // 订购按钮总点击量
34 private Long btnClickPv;
35
36 // 订购按钮总点击人数
37 private Long btnClickUv;
38
39 // 订购成功人数
40 private Long subscribeNum;
41
42 // 创建时间
43 private Timestamp createTime;
44
45 // 更新时间
46 private Timestamp updateTime;
47 }
1 package com.topdraw.business.module.subscribe.all.service.impl;
2
3 import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
4 import com.topdraw.utils.ValidationUtil;
5 import com.topdraw.business.module.subscribe.all.repository.SubscribePvUvRepository;
6 import com.topdraw.business.module.subscribe.all.service.SubscribePvUvService;
7 import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
8 import com.topdraw.business.module.subscribe.all.service.mapper.SubscribePvUvMapper;
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.stereotype.Service;
11 import org.springframework.transaction.annotation.Propagation;
12 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.dao.EmptyResultDataAccessException;
14 import org.springframework.util.Assert;
15
16 /**
17 * @author XiangHan
18 * @date 2022-04-20
19 */
20 @Service
21 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
22 public class SubscribePvUvServiceImpl implements SubscribePvUvService {
23
24 @Autowired
25 private SubscribePvUvRepository SubscribePvUvRepository;
26
27 @Autowired
28 private SubscribePvUvMapper SubscribePvUvMapper;
29
30 @Override
31 public SubscribePvUvDTO findById(Long id) {
32 SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(id).orElseGet(SubscribePvUv::new);
33 ValidationUtil.isNull(SubscribePvUv.getId(),"SubscribePvUv","id",id);
34 return SubscribePvUvMapper.toDto(SubscribePvUv);
35 }
36
37 @Override
38 @Transactional(rollbackFor = Exception.class)
39 public void create(SubscribePvUv resources) {
40 SubscribePvUvRepository.save(resources);
41 }
42
43 @Override
44 @Transactional(rollbackFor = Exception.class)
45 public void update(SubscribePvUv resources) {
46 SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(resources.getId()).orElseGet(SubscribePvUv::new);
47 ValidationUtil.isNull( SubscribePvUv.getId(),"SubscribePvUv","id",resources.getId());
48 SubscribePvUv.copy(resources);
49 SubscribePvUvRepository.save(SubscribePvUv);
50 }
51
52 @Override
53 @Transactional(rollbackFor = Exception.class)
54 public void delete(Long id) {
55 Assert.notNull(id, "The given id must not be null!");
56 SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(id).orElseThrow(
57 () -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUv.class, id), 1));
58 SubscribePvUvRepository.delete(SubscribePvUv);
59 }
60
61 @Override
62 public SubscribePvUv findByMarketingActivityCodeAndPackageId(String code, String packageId) {
63 SubscribePvUv SubscribePvUvDay =
64 SubscribePvUvRepository.findByMarketingActivityCodeAndPackageId(code, packageId).orElseGet(SubscribePvUv::new);
65 return SubscribePvUvDay;
66 }
67
68
69 }
1 package com.topdraw.business.module.subscribe.all.service.mapper;
2
3 import com.topdraw.base.BaseMapper;
4 import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
5 import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
6 import org.mapstruct.Mapper;
7 import org.mapstruct.ReportingPolicy;
8
9 /**
10 * @author XiangHan
11 * @date 2022-04-20
12 */
13 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
14 public interface SubscribePvUvMapper extends BaseMapper<SubscribePvUvDTO, SubscribePvUv> {
15
16 }
1 package com.topdraw.business.module.subscribe.day.domain;
2
3 import lombok.Data;
4 import lombok.experimental.Accessors;
5 import cn.hutool.core.bean.BeanUtil;
6 import cn.hutool.core.bean.copier.CopyOptions;
7 import javax.persistence.*;
8 import org.springframework.data.annotation.CreatedDate;
9 import org.springframework.data.annotation.LastModifiedDate;
10 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11 import java.sql.Timestamp;
12
13 import java.io.Serializable;
14
15 /**
16 * @author XiangHan
17 * @date 2022-04-20
18 */
19 @Entity
20 @Data
21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true)
23 @Table(name="act_subscribe_pv_uv_day")
24 public class SubscribePvUvDay implements Serializable {
25
26 // ID
27 @Id
28 @GeneratedValue(strategy = GenerationType.IDENTITY)
29 @Column(name = "id")
30 private Long id;
31
32 // 营销活动ID
33 @Column(name = "marketing_activity_id", nullable = false)
34 private Long marketingActivityId;
35
36 // 营销活动标识
37 @Column(name = "marketing_activity_code", nullable = false)
38 private String marketingActivityCode;
39
40 // 产品包id
41 @Column(name = "package_id", nullable = false)
42 private String packageId;
43
44 // 产品包标识
45 @Column(name = "package_code")
46 private String packageCode;
47
48 // 产品包名称
49 @Column(name = "package_name")
50 private String packageName;
51
52 // 日期
53 @Column(name = "day", nullable = false)
54 private String day;
55
56 // 订购按钮总点击量
57 @Column(name = "btn_click_pv", nullable = false)
58 private Long btnClickPv;
59
60 // 订购按钮总点击人数
61 @Column(name = "btn_click_uv", nullable = false)
62 private Long btnClickUv;
63
64 // 订购成功人数
65 @Column(name = "subscribe_num", nullable = false)
66 private Long subscribeNum;
67
68 // 创建时间
69 @CreatedDate
70 @Column(name = "create_time")
71 private Timestamp createTime;
72
73 // 更新时间
74 @LastModifiedDate
75 @Column(name = "update_time")
76 private Timestamp updateTime;
77
78 public void copy(SubscribePvUvDay source){
79 BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
80 }
81 }
1 package com.topdraw.business.module.subscribe.day.repository;
2
3 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
4 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
5 import org.springframework.data.jpa.repository.JpaRepository;
6 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
7
8 import java.util.Optional;
9
10 /**
11 * @author XiangHan
12 * @date 2022-04-20
13 */
14 public interface SubscribePvUvDayRepository extends JpaRepository<SubscribePvUvDay, Long>, JpaSpecificationExecutor<SubscribePvUvDay> {
15
16 Optional<SubscribePvUvDay> findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day);
17 }
1 package com.topdraw.business.module.subscribe.day.service;
2
3 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
4 import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
5 import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayQueryCriteria;
6 import org.springframework.data.domain.Pageable;
7 import java.util.Map;
8 import java.util.List;
9 import java.io.IOException;
10 import javax.servlet.http.HttpServletResponse;
11
12 /**
13 * @author XiangHan
14 * @date 2022-04-20
15 */
16 public interface SubscribePvUvDayService {
17
18 /**
19 * 查询数据分页
20 * @param criteria 条件参数
21 * @param pageable 分页参数
22 * @return Map<String,Object>
23 */
24 Map<String,Object> queryAll(SubscribePvUvDayQueryCriteria criteria, Pageable pageable);
25
26 /**
27 * 查询所有数据不分页
28 * @param criteria 条件参数
29 * @return List<SubscribePvUvDayDTO>
30 */
31 List<SubscribePvUvDayDTO> queryAll(SubscribePvUvDayQueryCriteria criteria);
32
33 /**
34 * 根据ID查询
35 * @param id ID
36 * @return SubscribePvUvDayDTO
37 */
38 SubscribePvUvDayDTO findById(Long id);
39
40 void create(SubscribePvUvDay resources);
41
42 void update(SubscribePvUvDay resources);
43
44 void delete(Long id);
45
46 SubscribePvUvDay findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day);
47
48 void updateByMarketingActivityCodeAndDayAndPackageId(SubscribePvUvDay subscribePvUvDay);
49
50 }
1 package com.topdraw.business.module.subscribe.day.service.dto;
2
3 import lombok.Data;
4 import java.sql.Timestamp;
5 import java.io.Serializable;
6
7
8 /**
9 * @author XiangHan
10 * @date 2022-04-20
11 */
12 @Data
13 public class SubscribePvUvDayDTO implements Serializable {
14
15 // ID
16 private Long id;
17
18 // 营销活动ID
19 private Long marketingActivityId;
20
21 // 营销活动标识
22 private String marketingActivityCode;
23
24 // 产品包id
25 private String packageId;
26
27 // 产品包标识
28 private String packageCode;
29
30 // 产品包名称
31 private String packageName;
32
33 // 日期
34 private String day;
35
36 // 订购按钮总点击量
37 private Long btnClickPv;
38
39 // 订购按钮总点击人数
40 private Long btnClickUv;
41
42 // 订购成功人数
43 private Long subscribeNum;
44
45 // 创建时间
46 private Timestamp createTime;
47
48 // 更新时间
49 private Timestamp updateTime;
50 }
1 package com.topdraw.business.module.subscribe.day.service.dto;
2
3 import lombok.Data;
4 import com.topdraw.annotation.Query;
5
6 /**
7 * @author XiangHan
8 * @date 2022-04-20
9 */
10 @Data
11 public class SubscribePvUvDayQueryCriteria{
12 }
1 package com.topdraw.business.module.subscribe.day.service.impl;
2
3 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
4 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
5 import com.topdraw.utils.ValidationUtil;
6 import com.topdraw.utils.FileUtil;
7 import com.topdraw.business.module.subscribe.day.repository.SubscribePvUvDayRepository;
8 import com.topdraw.business.module.subscribe.day.service.SubscribePvUvDayService;
9 import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
10 import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayQueryCriteria;
11 import com.topdraw.business.module.subscribe.day.service.mapper.SubscribePvUvDayMapper;
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Propagation;
15 import org.springframework.transaction.annotation.Transactional;
16 import org.springframework.dao.EmptyResultDataAccessException;
17 import org.springframework.data.domain.Page;
18 import org.springframework.data.domain.Pageable;
19 import org.springframework.util.Assert;
20 import com.topdraw.utils.PageUtil;
21 import com.topdraw.utils.QueryHelp;
22 import com.topdraw.utils.StringUtils;
23
24 import java.util.List;
25 import java.util.Map;
26 import java.io.IOException;
27 import javax.servlet.http.HttpServletResponse;
28 import java.util.ArrayList;
29 import java.util.LinkedHashMap;
30
31 /**
32 * @author XiangHan
33 * @date 2022-04-20
34 */
35 @Service
36 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
37 public class SubscribePvUvDayServiceImpl implements SubscribePvUvDayService {
38
39 @Autowired
40 private SubscribePvUvDayRepository SubscribePvUvDayRepository;
41
42 @Autowired
43 private SubscribePvUvDayMapper SubscribePvUvDayMapper;
44
45 @Override
46 public Map<String, Object> queryAll(SubscribePvUvDayQueryCriteria criteria, Pageable pageable) {
47 Page<SubscribePvUvDay> page = SubscribePvUvDayRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
48 return PageUtil.toPage(page.map(SubscribePvUvDayMapper::toDto));
49 }
50
51 @Override
52 public List<SubscribePvUvDayDTO> queryAll(SubscribePvUvDayQueryCriteria criteria) {
53 return SubscribePvUvDayMapper.toDto(SubscribePvUvDayRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
54 }
55
56 @Override
57 public SubscribePvUvDayDTO findById(Long id) {
58 SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(id).orElseGet(SubscribePvUvDay::new);
59 ValidationUtil.isNull(SubscribePvUvDay.getId(),"SubscribePvUvDay","id",id);
60 return SubscribePvUvDayMapper.toDto(SubscribePvUvDay);
61 }
62
63 @Override
64 @Transactional(rollbackFor = Exception.class)
65 public void create(SubscribePvUvDay resources) {
66 SubscribePvUvDayRepository.save(resources);
67 }
68
69 @Override
70 @Transactional(rollbackFor = Exception.class)
71 public void update(SubscribePvUvDay resources) {
72 SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(resources.getId()).orElseGet(SubscribePvUvDay::new);
73 ValidationUtil.isNull( SubscribePvUvDay.getId(),"SubscribePvUvDay","id",resources.getId());
74 SubscribePvUvDay.copy(resources);
75 SubscribePvUvDayRepository.save(SubscribePvUvDay);
76 }
77
78 @Override
79 @Transactional(rollbackFor = Exception.class)
80 public void delete(Long id) {
81 Assert.notNull(id, "The given id must not be null!");
82 SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(id).orElseThrow(
83 () -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUvDay.class, id), 1));
84 SubscribePvUvDayRepository.delete(SubscribePvUvDay);
85 }
86
87 @Override
88 public SubscribePvUvDay findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day) {
89 SubscribePvUvDay SubscribePvUvDay =
90 SubscribePvUvDayRepository.findByMarketingActivityCodeAndPackageIdAndDay(code, packageId, day).orElseGet(SubscribePvUvDay::new);
91 return SubscribePvUvDay;
92 }
93
94 @Override
95 public void updateByMarketingActivityCodeAndDayAndPackageId(SubscribePvUvDay subscribePvUvDay) {
96
97 }
98
99
100 }
1 package com.topdraw.business.module.subscribe.day.service.mapper;
2
3 import com.topdraw.base.BaseMapper;
4 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
5 import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
6 import org.mapstruct.Mapper;
7 import org.mapstruct.ReportingPolicy;
8
9 /**
10 * @author XiangHan
11 * @date 2022-04-20
12 */
13 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
14 public interface SubscribePvUvDayMapper extends BaseMapper<SubscribePvUvDayDTO, SubscribePvUvDay> {
15
16 }
1 package com.topdraw.business.module.subscribe.hour.domain;
2
3 import lombok.Data;
4 import lombok.experimental.Accessors;
5 import cn.hutool.core.bean.BeanUtil;
6 import cn.hutool.core.bean.copier.CopyOptions;
7 import javax.persistence.*;
8 import org.springframework.data.annotation.CreatedDate;
9 import org.springframework.data.annotation.LastModifiedDate;
10 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11 import java.sql.Timestamp;
12
13 import java.io.Serializable;
14
15 /**
16 * @author XiangHan
17 * @date 2022-04-20
18 */
19 @Entity
20 @Data
21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true)
23 @Table(name="act_subscribe_pv_uv_hour")
24 public class SubscribePvUvHour implements Serializable {
25
26 // ID
27 @Id
28 @GeneratedValue(strategy = GenerationType.IDENTITY)
29 @Column(name = "id")
30 private Long id;
31
32 // 营销活动ID
33 @Column(name = "marketing_activity_id", nullable = false)
34 private Long marketingActivityId;
35
36 // 营销活动标识
37 @Column(name = "marketing_activity_code", nullable = false)
38 private String marketingActivityCode;
39
40 // 产品包id
41 @Column(name = "package_id", nullable = false)
42 private String packageId;
43
44 // 产品包标识
45 @Column(name = "package_code")
46 private String packageCode;
47
48 // 产品包名称
49 @Column(name = "package_name")
50 private String packageName;
51
52 // 日期
53 @Column(name = "day", nullable = false)
54 private String day;
55
56 // 小时(0-23)
57 @Column(name = "hour", nullable = false)
58 private Integer hour;
59
60 // 订购按钮总点击量
61 @Column(name = "btn_click_pv", nullable = false)
62 private Long btnClickPv;
63
64 // 订购按钮总点击人数
65 @Column(name = "btn_click_uv", nullable = false)
66 private Long btnClickUv;
67
68 // 订购成功人数
69 @Column(name = "subscribe_num", nullable = false)
70 private Long subscribeNum;
71
72 // 创建时间
73 @CreatedDate
74 @Column(name = "create_time")
75 private Timestamp createTime;
76
77 // 更新时间
78 @LastModifiedDate
79 @Column(name = "update_time")
80 private Timestamp updateTime;
81
82 public void copy(SubscribePvUvHour source){
83 BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
84 }
85 }
1 package com.topdraw.business.module.subscribe.hour.repository;
2
3 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
4 import org.springframework.data.jpa.repository.JpaRepository;
5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
6
7 import java.util.List;
8 import java.util.Optional;
9
10 /**
11 * @author XiangHan
12 * @date 2022-04-20
13 */
14 public interface SubscribePvUvHourRepository extends JpaRepository<SubscribePvUvHour, Long>, JpaSpecificationExecutor<SubscribePvUvHour> {
15
16 Optional<SubscribePvUvHour> findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String day, int hour);
17 }
1 package com.topdraw.business.module.subscribe.hour.service;
2
3 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
4 import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
5 import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourQueryCriteria;
6 import org.springframework.data.domain.Pageable;
7 import java.util.Map;
8 import java.util.List;
9 import java.io.IOException;
10 import javax.servlet.http.HttpServletResponse;
11
12 /**
13 * @author XiangHan
14 * @date 2022-04-20
15 */
16 public interface SubscribePvUvHourService {
17
18 /**
19 * 根据ID查询
20 * @param id ID
21 * @return SubscribePvUvHourDTO
22 */
23 SubscribePvUvHourDTO findById(Long id);
24
25 void create(SubscribePvUvHour resources);
26
27 void update(SubscribePvUvHour resources);
28
29 void delete(Long id);
30
31 SubscribePvUvHour findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String toString, int hour);
32
33 void updateByMarketingActivityCodeAndDayAndHourAndPackageId(SubscribePvUvHour subscribePvUvHour);
34 }
1 package com.topdraw.business.module.subscribe.hour.service.dto;
2
3 import lombok.Data;
4 import java.sql.Timestamp;
5 import java.io.Serializable;
6
7
8 /**
9 * @author XiangHan
10 * @date 2022-04-20
11 */
12 @Data
13 public class SubscribePvUvHourDTO implements Serializable {
14
15 // ID
16 private Long id;
17
18 // 营销活动ID
19 private Long marketingActivityId;
20
21 // 营销活动标识
22 private String marketingActivityCode;
23
24 // 产品包id
25 private String packageId;
26
27 // 产品包标识
28 private String packageCode;
29
30 // 产品包名称
31 private String packageName;
32
33 // 日期
34 private String day;
35
36 // 小时(0-23)
37 private Integer hour;
38
39 // 订购按钮总点击量
40 private Long btnClickPv;
41
42 // 订购按钮总点击人数
43 private Long btnClickUv;
44
45 // 订购成功人数
46 private Long subscribeNum;
47
48 // 创建时间
49 private Timestamp createTime;
50
51 // 更新时间
52 private Timestamp updateTime;
53 }
1 package com.topdraw.business.module.subscribe.hour.service.dto;
2
3 import lombok.Data;
4 import com.topdraw.annotation.Query;
5
6 /**
7 * @author XiangHan
8 * @date 2022-04-20
9 */
10 @Data
11 public class SubscribePvUvHourQueryCriteria{
12 }
1 package com.topdraw.business.module.subscribe.hour.service.impl;
2
3 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
4 import com.topdraw.utils.ValidationUtil;
5 import com.topdraw.utils.FileUtil;
6 import com.topdraw.business.module.subscribe.hour.repository.SubscribePvUvHourRepository;
7 import com.topdraw.business.module.subscribe.hour.service.SubscribePvUvHourService;
8 import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
9 import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourQueryCriteria;
10 import com.topdraw.business.module.subscribe.hour.service.mapper.SubscribePvUvHourMapper;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Service;
13 import org.springframework.transaction.annotation.Propagation;
14 import org.springframework.transaction.annotation.Transactional;
15 import org.springframework.dao.EmptyResultDataAccessException;
16 import org.springframework.data.domain.Page;
17 import org.springframework.data.domain.Pageable;
18 import org.springframework.util.Assert;
19 import com.topdraw.utils.PageUtil;
20 import com.topdraw.utils.QueryHelp;
21 import com.topdraw.utils.StringUtils;
22
23 import java.util.List;
24 import java.util.Map;
25 import java.io.IOException;
26 import javax.servlet.http.HttpServletResponse;
27 import java.util.ArrayList;
28 import java.util.LinkedHashMap;
29
30 /**
31 * @author XiangHan
32 * @date 2022-04-20
33 */
34 @Service
35 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
36 public class SubscribePvUvHourServiceImpl implements SubscribePvUvHourService {
37
38 @Autowired
39 private SubscribePvUvHourRepository SubscribePvUvHourRepository;
40
41 @Autowired
42 private SubscribePvUvHourMapper SubscribePvUvHourMapper;
43
44 @Override
45 public SubscribePvUvHourDTO findById(Long id) {
46 SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(id).orElseGet(SubscribePvUvHour::new);
47 ValidationUtil.isNull(SubscribePvUvHour.getId(),"SubscribePvUvHour","id",id);
48 return SubscribePvUvHourMapper.toDto(SubscribePvUvHour);
49 }
50
51 @Override
52 @Transactional(rollbackFor = Exception.class)
53 public void create(SubscribePvUvHour resources) {
54 SubscribePvUvHourRepository.save(resources);
55 }
56
57 @Override
58 @Transactional(rollbackFor = Exception.class)
59 public void update(SubscribePvUvHour resources) {
60 SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(resources.getId()).orElseGet(SubscribePvUvHour::new);
61 ValidationUtil.isNull( SubscribePvUvHour.getId(),"SubscribePvUvHour","id",resources.getId());
62 SubscribePvUvHour.copy(resources);
63 SubscribePvUvHourRepository.save(SubscribePvUvHour);
64 }
65
66 @Override
67 @Transactional(rollbackFor = Exception.class)
68 public void delete(Long id) {
69 Assert.notNull(id, "The given id must not be null!");
70 SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(id).orElseThrow(
71 () -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUvHour.class, id), 1));
72 SubscribePvUvHourRepository.delete(SubscribePvUvHour);
73 }
74
75 @Override
76 public SubscribePvUvHour findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String day, int hour) {
77 SubscribePvUvHour SubscribePvUvHour =
78 SubscribePvUvHourRepository.findByMarketingActivityCodeAndPackageIdAndDayAndHour(code, packageId, day, hour).orElseGet(SubscribePvUvHour::new);
79 return SubscribePvUvHour;
80 }
81
82 @Override
83 public void updateByMarketingActivityCodeAndDayAndHourAndPackageId(SubscribePvUvHour subscribePvUvHour) {
84
85 }
86
87
88 }
1 package com.topdraw.business.module.subscribe.hour.service.mapper;
2
3 import com.topdraw.base.BaseMapper;
4 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
5 import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
6 import org.mapstruct.Mapper;
7 import org.mapstruct.ReportingPolicy;
8
9 /**
10 * @author XiangHan
11 * @date 2022-04-20
12 */
13 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
14 public interface SubscribePvUvHourMapper extends BaseMapper<SubscribePvUvHourDTO, SubscribePvUvHour> {
15
16 }
...@@ -20,7 +20,7 @@ import java.io.Serializable; ...@@ -20,7 +20,7 @@ import java.io.Serializable;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_pv_uv") 23 @Table(name="sub_pv_uv")
24 public class PvUv implements Serializable { 24 public class PvUv implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,11 @@ public class PvUv implements Serializable { ...@@ -29,13 +29,11 @@ public class PvUv implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 @Column(name = "subject_id", nullable = false)
33 @Column(name = "marketing_activity_id", nullable = false) 33 private Long subjectId;
34 private Long marketingActivityId;
35 34
36 // 营销活动标识 35 @Column(name = "subject_code", nullable = false)
37 @Column(name = "marketing_activity_code", nullable = false) 36 private String subjectCode;
38 private String marketingActivityCode;
39 37
40 // pv值 38 // pv值
41 @Column(name = "pv", nullable = false) 39 @Column(name = "pv", nullable = false)
...@@ -45,6 +43,12 @@ public class PvUv implements Serializable { ...@@ -45,6 +43,12 @@ public class PvUv implements Serializable {
45 @Column(name = "uv", nullable = false) 43 @Column(name = "uv", nullable = false)
46 private Integer uv; 44 private Integer uv;
47 45
46 @Column(name = "lp_id")
47 private Long lpId;
48
49 @Column(name = "site_id")
50 private Long siteId;
51
48 // 创建时间 52 // 创建时间
49 @CreatedDate 53 @CreatedDate
50 @Column(name = "create_time") 54 @Column(name = "create_time")
......
1 package com.topdraw.business.module.uv.all.service.dto; 1 package com.topdraw.business.module.uv.all.service.dto;
2 2
3 import lombok.Data; 3 import lombok.Data;
4
4 import java.sql.Timestamp; 5 import java.sql.Timestamp;
5 import java.io.Serializable; 6 import java.io.Serializable;
6 7
...@@ -15,11 +16,13 @@ public class PvUvDTO implements Serializable { ...@@ -15,11 +16,13 @@ public class PvUvDTO implements Serializable {
15 // ID 16 // ID
16 private Long id; 17 private Long id;
17 18
18 // 营销活动ID 19 private Long subjectId;
19 private Long marketingActivityId; 20
21 private String subjectCode;
22
23 private Long lpId;
20 24
21 // 营销活动标识 25 private Long siteId;
22 private String marketingActivityCode;
23 26
24 // pv值 27 // pv值
25 private Long pv; 28 private Long pv;
......
...@@ -20,7 +20,7 @@ import java.io.Serializable; ...@@ -20,7 +20,7 @@ import java.io.Serializable;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_pv_uv_day") 23 @Table(name="sub_pv_uv_day")
24 public class PvUvDay implements Serializable { 24 public class PvUvDay implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,11 @@ public class PvUvDay implements Serializable { ...@@ -29,13 +29,11 @@ public class PvUvDay implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 @Column(name = "subject_id", nullable = false)
33 @Column(name = "marketing_activity_id", nullable = false) 33 private Long subjectId;
34 private Long marketingActivityId;
35 34
36 // 营销活动标识 35 @Column(name = "subject_code", nullable = false)
37 @Column(name = "marketing_activity_code", nullable = false) 36 private String subjectCode;
38 private String marketingActivityCode;
39 37
40 // 日期 38 // 日期
41 @Column(name = "day", nullable = false) 39 @Column(name = "day", nullable = false)
...@@ -49,6 +47,12 @@ public class PvUvDay implements Serializable { ...@@ -49,6 +47,12 @@ public class PvUvDay implements Serializable {
49 @Column(name = "uv", nullable = false) 47 @Column(name = "uv", nullable = false)
50 private Integer uv; 48 private Integer uv;
51 49
50 @Column(name = "lp_id")
51 private Long lpId;
52
53 @Column(name = "site_id")
54 private Long siteId;
55
52 // 创建时间 56 // 创建时间
53 @CreatedDate 57 @CreatedDate
54 @Column(name = "create_time") 58 @Column(name = "create_time")
......
...@@ -15,11 +15,13 @@ public class PvUvDayDTO implements Serializable { ...@@ -15,11 +15,13 @@ public class PvUvDayDTO implements Serializable {
15 // ID 15 // ID
16 private Long id; 16 private Long id;
17 17
18 // 营销活动ID 18 private Long subjectId;
19 private Long marketingActivityId;
20 19
21 // 营销活动标识 20 private String subjectCode;
22 private String marketingActivityCode; 21
22 private Long lpId;
23
24 private Long siteId;
23 25
24 // 日期 26 // 日期
25 private String day; 27 private String day;
......
...@@ -20,7 +20,7 @@ import java.io.Serializable; ...@@ -20,7 +20,7 @@ import java.io.Serializable;
20 @Data 20 @Data
21 @EntityListeners(AuditingEntityListener.class) 21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true) 22 @Accessors(chain = true)
23 @Table(name="act_pv_uv_hour") 23 @Table(name="sub_pv_uv_hour")
24 public class PvUvHour implements Serializable { 24 public class PvUvHour implements Serializable {
25 25
26 // ID 26 // ID
...@@ -29,13 +29,11 @@ public class PvUvHour implements Serializable { ...@@ -29,13 +29,11 @@ public class PvUvHour implements Serializable {
29 @Column(name = "id") 29 @Column(name = "id")
30 private Long id; 30 private Long id;
31 31
32 // 营销活动ID 32 @Column(name = "subject_id", nullable = false)
33 @Column(name = "marketing_activity_id", nullable = false) 33 private Long subjectId;
34 private Long marketingActivityId;
35 34
36 // 营销活动标识 35 @Column(name = "subject_code", nullable = false)
37 @Column(name = "marketing_activity_code", nullable = false) 36 private String subjectCode;
38 private String marketingActivityCode;
39 37
40 // 日期 38 // 日期
41 @Column(name = "day", nullable = false) 39 @Column(name = "day", nullable = false)
...@@ -53,6 +51,12 @@ public class PvUvHour implements Serializable { ...@@ -53,6 +51,12 @@ public class PvUvHour implements Serializable {
53 @Column(name = "uv", nullable = false) 51 @Column(name = "uv", nullable = false)
54 private Integer uv; 52 private Integer uv;
55 53
54 @Column(name = "lp_id")
55 private Long lpId;
56
57 @Column(name = "site_id")
58 private Long siteId;
59
56 // 创建时间 60 // 创建时间
57 @CreatedDate 61 @CreatedDate
58 @Column(name = "create_time") 62 @Column(name = "create_time")
......
...@@ -15,11 +15,13 @@ public class PvUvHourDTO implements Serializable { ...@@ -15,11 +15,13 @@ public class PvUvHourDTO implements Serializable {
15 // ID 15 // ID
16 private Long id; 16 private Long id;
17 17
18 // 营销活动ID 18 private Long subjectId;
19 private Long marketingActivityId;
20 19
21 // 营销活动标识 20 private String subjectCode;
22 private String marketingActivityCode; 21
22 private Long lpId;
23
24 private Long siteId;
23 25
24 // 日期 26 // 日期
25 private String day; 27 private String day;
......
...@@ -51,251 +51,200 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -51,251 +51,200 @@ public class ActivityBtnClickPvUcCalculateTask {
51 private ActivityBtnPvUvHourService activityBtnPvUvHourService; 51 private ActivityBtnPvUvHourService activityBtnPvUvHourService;
52 52
53 53
54 private List<Map<String,Object>> getAllMarketingActivityCode(){ 54 private List<Map<String,Object>> getAllSubjectCode(){
55 String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` , tadr.`end_time` AS `endTime` FROM `act_marketing_activity` tadr WHERE " + 55 String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` FROM `x_subject` tadr " +
56 " now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY) GROUP BY `code`"; 56 " GROUP BY `code`";
57 return this.jdbcTemplate.queryForList(sql); 57 return this.jdbcTemplate.queryForList(sql);
58 } 58 }
59 59
60 60
61 public void calculateRedisData2Mysql() { 61 public void calculateRedisData2Mysql() {
62 62
63 List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode(); 63 List<Map<String, Object>> allMarketingActivityCode = this.getAllSubjectCode();
64 64
65 if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) { 65 if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) {
66 66
67 for (Map<String, Object> map : allMarketingActivityCode) { 67 for (Map<String, Object> map : allMarketingActivityCode) {
68 68
69 // 营销活动code 69 // 专题code
70 Object codeObj = map.get("code"); 70 Object codeObj = map.get("code");
71 Object idObj = map.get("id"); 71 Object idObj = map.get("id");
72 if (Objects.nonNull(codeObj) && Objects.nonNull(idObj)) { 72 if (Objects.nonNull(codeObj) && Objects.nonNull(idObj)) {
73 String code = codeObj.toString(); 73 String code = codeObj.toString();
74 String id = idObj.toString(); 74 String id = idObj.toString();
75 log.info("marktingActivity ===>>> code ====>>> [{}]", code); 75 log.info("subject ===>>> code ====>>> [{}]", code);
76
77 String subjectCode ="";
78 Long subjectId = 0L;
79 Long paramValueId = 0L;
80 String name = "";
81
82 // 获取此专题活动对应的参数,格式 事件code-按钮id
83 Set<String> codeAndBtnIds = this.redisUtils.smembers("SUBJECT_CODE|"+code);
84 if (Objects.nonNull(codeAndBtnIds) && CollectionUtils.isNotEmpty(codeAndBtnIds)){
85 for (String s1 : codeAndBtnIds) {
86 log.info("codeAndBtnId ==>> {}", s1);
87 String[] split = s1.split("#");
88
89 if (split.length == 0) {
90 split = s1.split("-");
91 }
76 92
77 LocalDateTime endTime = (LocalDateTime) map.get("endTime"); 93 if (split.length == 0) {
94 continue;
95 }
96 log.info("分割后的结果 ==>> {}", split);
97 try {
98 subjectCode = code;
99 log.info("专题code ==>> {}", subjectCode);
100 subjectId = this.findSubjectByCode(subjectCode);
101 if (Objects.isNull(subjectId)) {
102 log.error("模板按钮点击次数统计异常,通过活动code无法获取专题, subjectCode ==>> {}", subjectCode);
103 continue;
104 }
105 paramValueId = Long.valueOf(split[1]);
106 log.info("模板属性id ==>> {}", paramValueId);
107 name = this.findParamValueByValueId(paramValueId);
108 log.info("模板属性名称 ==>> {}", name);
109 if (StringUtils.isBlank(name)) {
110 log.warn("模板按钮点击次数统计异常,无实例内容名称, paramValueId ==>> {}", paramValueId);
111 name = "#";
112 // continue;
113 }
114 } catch (Exception e) {
115 log.error(e.getMessage());
116 continue;
117 }
78 118
79 if (Objects.nonNull(endTime)) { 119 // 小时pv、uv值
120 ActTplParamClickHour activityBtnPvUvHour_ =
121 this.activityBtnPvUvHourService.
122 findBySubjectIdAndTemplateParamValueIdAndDayAndHour(
123 subjectId, paramValueId, LocalDate.now().toString(),LocalDateTime.now().getHour());
124
125 if (Objects.isNull(activityBtnPvUvHour_.getId())) {
126 // 新增
127 Integer hourPv = this.getHourPV(subjectCode, paramValueId);
128 Integer hourUv = this.getHourUV(subjectCode, paramValueId);
129
130 ActTplParamClickHour activityBtnPvUvHour = new ActTplParamClickHour();
131 activityBtnPvUvHour.setSubjectId(subjectId);
132 activityBtnPvUvHour.setSubjectCode(subjectCode);
133 activityBtnPvUvHour.setName(name);
134 activityBtnPvUvHour.setDay(LocalDate.now().toString());
135 activityBtnPvUvHour.setTemplateParamValueId(paramValueId);
136 activityBtnPvUvHour.setHour(LocalDateTime.now().getHour());
137 activityBtnPvUvHour.setPv(hourPv);
138 activityBtnPvUvHour.setUv(hourUv);
139 this.activityBtnPvUvHourService.create(activityBtnPvUvHour);
140
141 } else {
142
143 // 修改
144 Integer hourPv = this.getHourPV(subjectCode, paramValueId);
145 Integer hourUv = this.getHourUV(subjectCode, paramValueId);
146 log.info("hourPv ==>> {}", hourPv);
147 log.info("hourUv ==>> {}", hourUv);
148
149 if (activityBtnPvUvHour_.getPv() >= hourPv) {
150 hourPv = activityBtnPvUvHour_.getPv();
151 }
80 152
81 String marktingActivityCode =""; 153 if (activityBtnPvUvHour_.getUv() >= hourUv) {
82 Long marktingActivityId = 0L; 154 hourUv = activityBtnPvUvHour_.getUv();
83 String activityCode = ""; 155 }
84 Long activityId = 0L;
85 Long paramValueId = 0L;
86 String name = "";
87 156
88 // 获取此营销活动对应的参数,格式 事件code-按钮id 157 activityBtnPvUvHour_.setPv(hourPv);
89 Set<String> codeAndBtnIds = this.redisUtils.smembers("MS_M_ACTIVITY_CODE|"+code); 158 activityBtnPvUvHour_.setUv(hourUv);
90 if (Objects.nonNull(codeAndBtnIds) && CollectionUtils.isNotEmpty(codeAndBtnIds)){ 159 activityBtnPvUvHour_.setUpdateTime(TimestampUtil.now());
91 for (String s1 : codeAndBtnIds) { 160 this.activityBtnPvUvHourService.update(activityBtnPvUvHour_);
92 log.info("营销活动code、活动事件code ==>> {}", s1);
93 String[] split = s1.split("#");
94 161
95 if (split.length == 0) { 162 }
96 split = s1.split("-");
97 }
98 163
99 if (split.length == 0) { 164 // day pv、uv值
100 continue; 165 ActTplParamClickDay pvUvDay1 = this.activityBtnPvUvDayService.
101 } 166 findBySubjectIdAndTemplateParamValueIdAndDay(subjectId, paramValueId, LocalDate.now().toString());
102 log.info("分割后的结果 ==>> {}", split); 167 if(Objects.isNull(pvUvDay1.getId())){
103 try { 168
104 marktingActivityCode = code; 169 ActTplParamClickDay activityBtnPvUvDay = new ActTplParamClickDay();
105 log.info("营销活动code ==>> {}", marktingActivityCode); 170 activityBtnPvUvDay.setSubjectCode(subjectCode);
106 marktingActivityId = this.findMarktingActivityByCode(marktingActivityCode); 171 activityBtnPvUvDay.setSubjectId(subjectId);
107 if (Objects.isNull(marktingActivityId)) { 172 activityBtnPvUvDay.setDay(LocalDate.now().toString());
108 log.error("模板按钮点击次数统计异常,通过活动code无法获取营销活动, marktingActivityCode ==>> {}", marktingActivityCode); 173 activityBtnPvUvDay.setTemplateParamValueId(paramValueId);
109 continue; 174 activityBtnPvUvDay.setName(name);
110 } 175
111 activityCode = split[0]; 176 Integer dayPv = this.getDayPV(subjectCode, paramValueId);
112 log.info("活动事件code ==>> {}", activityCode); 177 Integer dayUv = this.getDayUV(subjectCode, paramValueId);
113 activityId = this.findActivityByCode(activityCode); 178 log.info("dayPv ==>> {}", dayPv);
114 log.info("活动事件Id ==>> {}", activityId); 179 log.info("dayUv ==>> {}", dayUv);
115 if (Objects.isNull(activityId)) { 180 activityBtnPvUvDay.setPv(dayPv);
116 log.warn("模板按钮点击次数统计异常,通过活动事件code无法获取活动事件, activityCode ==>> {}", activityCode); 181 activityBtnPvUvDay.setUv(dayUv);
117 // continue; 182 this.activityBtnPvUvDayService.create(activityBtnPvUvDay);
118 } 183
119 paramValueId = Long.valueOf(split[1]); 184 } else {
120 log.info("模板属性id ==>> {}", paramValueId); 185
121 name = this.findParamValueByValueId(paramValueId); 186 Integer dayPv = this.getDayPV(subjectCode, paramValueId);
122 log.info("模板属性名称 ==>> {}", name); 187 Integer dayUv = this.getDayUV(subjectCode, paramValueId);
123 if (StringUtils.isBlank(name)) { 188 log.info("dayPv ==>> {}", dayPv);
124 log.warn("模板按钮点击次数统计异常,无实例内容名称, paramValueId ==>> {}", paramValueId); 189 log.info("dayUv ==>> {}", dayUv);
125 name = "#"; 190
126 // continue; 191 if (pvUvDay1.getPv() >= dayPv) {
127 } 192 dayPv = pvUvDay1.getPv();
128 } catch (Exception e) {
129 log.error(e.getMessage());
130 continue;
131 } 193 }
132 194
133 log.info("活动结束时间 ==>> {}", endTime); 195 if (pvUvDay1.getUv() >= dayUv) {
134 // 活动结束删除所有的对应的key 196 dayUv = pvUvDay1.getUv();
135 if (endTime.compareTo(LocalDateTime.now()) <= 0) {
136 log.warn("活动结束,活动结束时间两天后删除活动code对应的所有key");
137 if (endTime.plusDays(2).compareTo(LocalDateTime.now()) <= 0) {
138
139 Set<String> keys = this.redisUtils.keys("*|" + code+"#"+activityCode+"#"+paramValueId + "*");
140 if (CollectionUtils.isNotEmpty(keys)) {
141 for (Object key : keys) {
142 this.redisUtils.del(key.toString());
143 log.info("删除活动code对应的所有的key --->>{},成功", key);
144 }
145 } else {
146 keys = this.redisUtils.keys("*|" + code+"-"+activityCode+"-"+paramValueId + "*");
147 if (CollectionUtils.isNotEmpty(keys)) {
148 for (Object key : keys) {
149 this.redisUtils.del(key.toString());
150 log.info("删除活动code对应的所有的key --->>{},成功", key);
151 }
152 }
153 }
154
155 // 删除营销活动下所有的活动事件对应的按钮
156 Set<String> keys_ = this.redisUtils.keys("MS_M_ACTIVITY_CODE|" + code);
157 if (CollectionUtils.isNotEmpty(keys_)) {
158 this.redisUtils.del("MS_M_ACTIVITY_CODE|" + code);
159 log.info("删除活动code对应的所有的key --->>{},成功 ", "MS_M_ACTIVITY_CODE|" + code);
160
161 }
162
163 }
164 continue;
165 } 197 }
166 198
167 // 小时pv、uv值 199 pvUvDay1.setPv(dayPv);
168 ActTplParamClickHour activityBtnPvUvHour_ = 200 pvUvDay1.setUv(dayUv);
169 this.activityBtnPvUvHourService. 201 pvUvDay1.setUpdateTime(TimestampUtil.now());
170 findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(marktingActivityId, 202 this.activityBtnPvUvDayService.update(pvUvDay1);
171 activityId, paramValueId, LocalDate.now().toString(),LocalDateTime.now().getHour()); 203 }
172
173 if (Objects.isNull(activityBtnPvUvHour_.getId())) {
174 // 新增
175 Integer hourPv = this.getHourPV(marktingActivityCode, activityCode, paramValueId);
176 Integer hourUv = this.getHourUV(marktingActivityCode, activityCode, paramValueId);
177
178 ActTplParamClickHour activityBtnPvUvHour = new ActTplParamClickHour();
179 activityBtnPvUvHour.setMarketingActivityId(marktingActivityId);
180 activityBtnPvUvHour.setActivityId(activityId);
181 activityBtnPvUvHour.setName(name);
182 activityBtnPvUvHour.setDay(LocalDate.now().toString());
183 activityBtnPvUvHour.setTemplateParamValueId(paramValueId);
184 activityBtnPvUvHour.setHour(LocalDateTime.now().getHour());
185 activityBtnPvUvHour.setPv(hourPv);
186 activityBtnPvUvHour.setUv(hourUv);
187 this.activityBtnPvUvHourService.create(activityBtnPvUvHour);
188
189 } else {
190
191 // 修改
192 Integer hourPv = this.getHourPV(marktingActivityCode, activityCode, paramValueId);
193 Integer hourUv = this.getHourUV(marktingActivityCode, activityCode, paramValueId);
194 log.info("hourPv ==>> {}", hourPv);
195 log.info("hourUv ==>> {}", hourUv);
196
197 if (activityBtnPvUvHour_.getPv() >= hourPv) {
198 hourPv = activityBtnPvUvHour_.getPv();
199 }
200
201 if (activityBtnPvUvHour_.getUv() >= hourUv) {
202 hourUv = activityBtnPvUvHour_.getUv();
203 }
204
205 activityBtnPvUvHour_.setPv(hourPv);
206 activityBtnPvUvHour_.setUv(hourUv);
207 activityBtnPvUvHour_.setUpdateTime(TimestampUtil.now());
208 this.activityBtnPvUvHourService.update(activityBtnPvUvHour_);
209 204
210 } 205 // all
206 ActTplParamClick pvUv1 = this.activityBtnPvUvService.
207 findBySubjectIdAndTemplateParamValueId(subjectId, paramValueId);
208 if(Objects.isNull(pvUv1.getId())){
209
210 ActTplParamClick activityBtnPvUv = new ActTplParamClick();
211 activityBtnPvUv.setSubjectId(Long.parseLong(id));
212 activityBtnPvUv.setSubjectCode(subjectCode);
213 activityBtnPvUv.setTemplateParamValueId(paramValueId);
214 activityBtnPvUv.setName(name);
215
216 Integer allPV = this.getAllPV(subjectCode, paramValueId);
217 Integer allUv = this.getAllUV(subjectCode, paramValueId);
218 log.info("allPV ==>> {}", allPV);
219 log.info("allUv ==>> {}", allUv);
220 activityBtnPvUv.setPv(allPV);
221 activityBtnPvUv.setUv(allUv);
211 222
212 // day pv、uv值 223 this.activityBtnPvUvService.create(activityBtnPvUv);
213 ActTplParamClickDay pvUvDay1 = this.activityBtnPvUvDayService. 224
214 findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(marktingActivityId, 225 } else {
215 activityId, paramValueId, LocalDate.now().toString()); 226
216 if(Objects.isNull(pvUvDay1.getId())){ 227 Integer allPV = this.getAllPV(subjectCode, paramValueId);
217 228 Integer allUv = this.getAllUV(subjectCode, paramValueId);
218 ActTplParamClickDay activityBtnPvUvDay = new ActTplParamClickDay(); 229 log.info("allPV ==>> {}", allPV);
219 activityBtnPvUvDay.setMarketingActivityId(marktingActivityId); 230 log.info("allUv ==>> {}", allUv);
220 activityBtnPvUvDay.setActivityId(activityId); 231
221 activityBtnPvUvDay.setDay(LocalDate.now().toString()); 232 if (pvUv1.getPv() >= allPV) {
222 activityBtnPvUvDay.setTemplateParamValueId(paramValueId); 233 allPV = pvUv1.getPv();
223 activityBtnPvUvDay.setName(name);
224
225 Integer dayPv = this.getDayPV(marktingActivityCode, activityCode, paramValueId);
226 Integer dayUv = this.getDayUV(marktingActivityCode, activityCode, paramValueId);
227 log.info("dayPv ==>> {}", dayPv);
228 log.info("dayUv ==>> {}", dayUv);
229 activityBtnPvUvDay.setPv(dayPv);
230 activityBtnPvUvDay.setUv(dayUv);
231 this.activityBtnPvUvDayService.create(activityBtnPvUvDay);
232
233 } else {
234
235 Integer dayPv = this.getDayPV(marktingActivityCode, activityCode, paramValueId);
236 Integer dayUv = this.getDayUV(marktingActivityCode, activityCode, paramValueId);
237 log.info("dayPv ==>> {}", dayPv);
238 log.info("dayUv ==>> {}", dayUv);
239
240 if (pvUvDay1.getPv() >= dayPv) {
241 dayPv = pvUvDay1.getPv();
242 }
243
244 if (pvUvDay1.getUv() >= dayUv) {
245 dayUv = pvUvDay1.getUv();
246 }
247
248 pvUvDay1.setPv(dayPv);
249 pvUvDay1.setUv(dayUv);
250 pvUvDay1.setUpdateTime(TimestampUtil.now());
251 this.activityBtnPvUvDayService.update(pvUvDay1);
252 } 234 }
253 235
254 // all 236 if (pvUv1.getUv() >= allUv) {
255 ActTplParamClick pvUv1 = this.activityBtnPvUvService. 237 allUv = pvUv1.getUv();
256 findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(marktingActivityId,
257 activityId, paramValueId);
258 if(Objects.isNull(pvUv1.getId())){
259
260 ActTplParamClick activityBtnPvUv = new ActTplParamClick();
261 activityBtnPvUv.setMarketingActivityId(Long.parseLong(id));
262 activityBtnPvUv.setActivityId(activityId);
263 activityBtnPvUv.setTemplateParamValueId(paramValueId);
264 activityBtnPvUv.setName(name);
265
266 Integer allPV = this.getAllPV(marktingActivityCode, activityCode, paramValueId);
267 Integer allUv = this.getAllUV(marktingActivityCode, activityCode, paramValueId);
268 log.info("allPV ==>> {}", allPV);
269 log.info("allUv ==>> {}", allUv);
270 activityBtnPvUv.setPv(allPV);
271 activityBtnPvUv.setUv(allUv);
272
273 this.activityBtnPvUvService.create(activityBtnPvUv);
274
275 } else {
276
277 Integer allPV = this.getAllPV(marktingActivityCode, activityCode, paramValueId);
278 Integer allUv = this.getAllUV(marktingActivityCode, activityCode, paramValueId);
279 log.info("allPV ==>> {}", allPV);
280 log.info("allUv ==>> {}", allUv);
281
282 if (pvUv1.getPv() >= allPV) {
283 allPV = pvUv1.getPv();
284 }
285
286 if (pvUv1.getUv() >= allUv) {
287 allUv = pvUv1.getUv();
288 }
289
290 pvUv1.setPv(allPV);
291 pvUv1.setUv(allUv);
292 pvUv1.setUpdateTime(TimestampUtil.now());
293 this.activityBtnPvUvService.update(pvUv1);
294 } 238 }
295 239
240 pvUv1.setPv(allPV);
241 pvUv1.setUv(allUv);
242 pvUv1.setUpdateTime(TimestampUtil.now());
243 this.activityBtnPvUvService.update(pvUv1);
296 } 244 }
297 245
298 } 246 }
247
299 } 248 }
300 249
301 } 250 }
...@@ -306,14 +255,13 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -306,14 +255,13 @@ public class ActivityBtnClickPvUcCalculateTask {
306 } 255 }
307 256
308 257
309 private Integer getAllUV(String code, String activityCode, Long btnId) { 258 private Integer getAllUV(String code, Long btnId) {
310 String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId; 259 String key = "SUBJECT_BTN_UV|"+code+"#"+btnId;
311 log.info("getAllUV ==>> key ==>> {}", key); 260 log.info("getAllUV ==>> key ==>> {}", key);
312 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 261 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
313 if (Objects.nonNull(hourBtnClickUV)) { 262 if (Objects.nonNull(hourBtnClickUV)) {
314 return Integer.valueOf(hourBtnClickUV.toString()); 263 return Integer.valueOf(hourBtnClickUV.toString());
315 } else { 264 } else {
316 key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId;
317 hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 265 hourBtnClickUV = this.redisUtils.hget(key, "ALL");
318 if (Objects.nonNull(hourBtnClickUV)) { 266 if (Objects.nonNull(hourBtnClickUV)) {
319 return Integer.valueOf(hourBtnClickUV.toString()); 267 return Integer.valueOf(hourBtnClickUV.toString());
...@@ -323,14 +271,13 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -323,14 +271,13 @@ public class ActivityBtnClickPvUcCalculateTask {
323 return 0; 271 return 0;
324 } 272 }
325 273
326 private Integer getAllPV(String code, String activityCode, Long btnId) { 274 private Integer getAllPV(String code, Long btnId) {
327 String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId; 275 String key = "SUBJECT_BTN_PV|"+code+"#"+btnId;
328 log.info("getAllPV ==>> key ==>> {}", key); 276 log.info("getAllPV ==>> key ==>> {}", key);
329 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 277 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
330 if (Objects.nonNull(hourBtnClickPV)) { 278 if (Objects.nonNull(hourBtnClickPV)) {
331 return Integer.valueOf(hourBtnClickPV.toString()); 279 return Integer.valueOf(hourBtnClickPV.toString());
332 } else { 280 } else {
333 key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId;
334 hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 281 hourBtnClickPV = this.redisUtils.hget(key, "ALL");
335 if (Objects.nonNull(hourBtnClickPV)) { 282 if (Objects.nonNull(hourBtnClickPV)) {
336 return Integer.valueOf(hourBtnClickPV.toString()); 283 return Integer.valueOf(hourBtnClickPV.toString());
...@@ -340,14 +287,13 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -340,14 +287,13 @@ public class ActivityBtnClickPvUcCalculateTask {
340 return 0; 287 return 0;
341 } 288 }
342 289
343 private Integer getDayUV(String code, String activityCode, Long btnId) { 290 private Integer getDayUV(String code, Long btnId) {
344 String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now(); 291 String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now();
345 log.info("getDayUV ==>> key ==>> {}", key); 292 log.info("getDayUV ==>> key ==>> {}", key);
346 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 293 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
347 if (Objects.nonNull(hourBtnClickUV)) { 294 if (Objects.nonNull(hourBtnClickUV)) {
348 return Integer.valueOf(hourBtnClickUV.toString()); 295 return Integer.valueOf(hourBtnClickUV.toString());
349 } else { 296 } else {
350 key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now();
351 hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 297 hourBtnClickUV = this.redisUtils.hget(key, "ALL");
352 if (Objects.nonNull(hourBtnClickUV)) { 298 if (Objects.nonNull(hourBtnClickUV)) {
353 return Integer.valueOf(hourBtnClickUV.toString()); 299 return Integer.valueOf(hourBtnClickUV.toString());
...@@ -357,14 +303,13 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -357,14 +303,13 @@ public class ActivityBtnClickPvUcCalculateTask {
357 return 0; 303 return 0;
358 } 304 }
359 305
360 private Integer getDayPV(String code, String activityCode, Long btnId) { 306 private Integer getDayPV(String code, Long btnId) {
361 String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now(); 307 String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now();
362 log.info("getDayUV ==>> key ==>> {}", key); 308 log.info("getDayUV ==>> key ==>> {}", key);
363 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 309 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
364 if (Objects.nonNull(hourBtnClickPV)) { 310 if (Objects.nonNull(hourBtnClickPV)) {
365 return Integer.valueOf(hourBtnClickPV.toString()); 311 return Integer.valueOf(hourBtnClickPV.toString());
366 } else { 312 } else {
367 key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now();
368 hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 313 hourBtnClickPV = this.redisUtils.hget(key, "ALL");
369 if (Objects.nonNull(hourBtnClickPV)) { 314 if (Objects.nonNull(hourBtnClickPV)) {
370 return Integer.valueOf(hourBtnClickPV.toString()); 315 return Integer.valueOf(hourBtnClickPV.toString());
...@@ -374,7 +319,7 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -374,7 +319,7 @@ public class ActivityBtnClickPvUcCalculateTask {
374 return 0; 319 return 0;
375 } 320 }
376 321
377 private Integer getHourUV(String code, String activityCode, Long btnId) { 322 private Integer getHourUV(String code, Long btnId) {
378 int hour = LocalDateTime.now().getHour(); 323 int hour = LocalDateTime.now().getHour();
379 String hourStr = ""; 324 String hourStr = "";
380 if (hour < 10) { 325 if (hour < 10) {
...@@ -383,13 +328,12 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -383,13 +328,12 @@ public class ActivityBtnClickPvUcCalculateTask {
383 hourStr = String.valueOf(hour); 328 hourStr = String.valueOf(hour);
384 } 329 }
385 330
386 String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr; 331 String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
387 log.info("getHourUV ==>> key ==>> {}", key); 332 log.info("getHourUV ==>> key ==>> {}", key);
388 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 333 Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
389 if (Objects.nonNull(hourBtnClickUV)) { 334 if (Objects.nonNull(hourBtnClickUV)) {
390 return Integer.valueOf(hourBtnClickUV.toString()); 335 return Integer.valueOf(hourBtnClickUV.toString());
391 } else { 336 } else {
392 key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
393 hourBtnClickUV = this.redisUtils.hget(key, "ALL"); 337 hourBtnClickUV = this.redisUtils.hget(key, "ALL");
394 if (Objects.nonNull(hourBtnClickUV)) { 338 if (Objects.nonNull(hourBtnClickUV)) {
395 return Integer.valueOf(hourBtnClickUV.toString()); 339 return Integer.valueOf(hourBtnClickUV.toString());
...@@ -399,7 +343,7 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -399,7 +343,7 @@ public class ActivityBtnClickPvUcCalculateTask {
399 return 0; 343 return 0;
400 } 344 }
401 345
402 private Integer getHourPV(String code, String activityCode, Long btnId) { 346 private Integer getHourPV(String code, Long btnId) {
403 int hour = LocalDateTime.now().getHour(); 347 int hour = LocalDateTime.now().getHour();
404 String hourStr = ""; 348 String hourStr = "";
405 if (hour < 10) { 349 if (hour < 10) {
...@@ -407,13 +351,12 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -407,13 +351,12 @@ public class ActivityBtnClickPvUcCalculateTask {
407 } else { 351 } else {
408 hourStr = String.valueOf(hour); 352 hourStr = String.valueOf(hour);
409 } 353 }
410 String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr; 354 String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
411 log.info("getHourPV ==>> key ==>> {}", key); 355 log.info("getHourPV ==>> key ==>> {}", key);
412 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 356 Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
413 if (Objects.nonNull(hourBtnClickPV)) { 357 if (Objects.nonNull(hourBtnClickPV)) {
414 return Integer.valueOf(hourBtnClickPV.toString()); 358 return Integer.valueOf(hourBtnClickPV.toString());
415 } else { 359 } else {
416 key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
417 hourBtnClickPV = this.redisUtils.hget(key, "ALL"); 360 hourBtnClickPV = this.redisUtils.hget(key, "ALL");
418 if (Objects.nonNull(hourBtnClickPV)) { 361 if (Objects.nonNull(hourBtnClickPV)) {
419 return Integer.valueOf(hourBtnClickPV.toString()); 362 return Integer.valueOf(hourBtnClickPV.toString());
...@@ -424,8 +367,6 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -424,8 +367,6 @@ public class ActivityBtnClickPvUcCalculateTask {
424 } 367 }
425 368
426 private String findParamValueByValueId(Long paramValueId) { 369 private String findParamValueByValueId(Long paramValueId) {
427 /* String sql = "SELECT pa.`name` FROM `tp_template_param` AS pa LEFT JOIN `tp_template_param_value` AS tt " +
428 " ON pa.id = tt.template_param_id WHERE tt.id = '"+paramValueId+"'";*/
429 String sql = "SELECT tt.`name` FROM `tp_template_param_value` AS tt " + 370 String sql = "SELECT tt.`name` FROM `tp_template_param_value` AS tt " +
430 " WHERE tt.id = '"+paramValueId+"'"; 371 " WHERE tt.id = '"+paramValueId+"'";
431 List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql); 372 List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
...@@ -435,18 +376,8 @@ public class ActivityBtnClickPvUcCalculateTask { ...@@ -435,18 +376,8 @@ public class ActivityBtnClickPvUcCalculateTask {
435 return null; 376 return null;
436 } 377 }
437 378
438 private Long findActivityByCode(String activityCode) { 379 private Long findSubjectByCode(String subjectCode) {
439 String sql = "SELECT aa.`id` FROM `act_activity` AS aa WHERE `code` = '"+activityCode+"'"; 380 String sql = "SELECT am.`id` FROM `x_subject` AS am WHERE `code` = '"+subjectCode+"'";
440 List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
441 if (CollectionUtils.isNotEmpty(objectMap)) {
442 Map<String, Object> map = objectMap.get(0);
443 return Long.valueOf(map.get("id").toString());
444 }
445 return null;
446 }
447
448 private Long findMarktingActivityByCode(String marktingActivityCode) {
449 String sql = "SELECT am.`id` FROM `act_marketing_activity` AS am WHERE `code` = '"+marktingActivityCode+"'";
450 List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql); 381 List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
451 if (CollectionUtils.isNotEmpty(objectMap)) { 382 if (CollectionUtils.isNotEmpty(objectMap)) {
452 Map<String, Object> map = objectMap.get(0); 383 Map<String, Object> map = objectMap.get(0);
......
...@@ -48,40 +48,18 @@ public class PvUvCalculateTask { ...@@ -48,40 +48,18 @@ public class PvUvCalculateTask {
48 private PvUvHourService pvUvHourService; 48 private PvUvHourService pvUvHourService;
49 49
50 public boolean calculateRedisData2Mysql(){ 50 public boolean calculateRedisData2Mysql(){
51 List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode(); 51 List<Map<String, Object>> allSubjectCode = this.getAllSubjectCode();
52 52
53 if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) { 53 if (CollectionUtils.isNotEmpty(allSubjectCode)) {
54 54
55 for (Map<String, Object> map : allMarketingActivityCode) { 55 for (Map<String, Object> map : allSubjectCode) {
56 56
57 Object codeObj = map.get("code"); 57 Object codeObj = map.get("code");
58 Object idObj = map.get("id"); 58 Object idObj = map.get("id");
59 if (Objects.nonNull(codeObj)&&Objects.nonNull(idObj)) { 59 if (Objects.nonNull(codeObj)&&Objects.nonNull(idObj)) {
60 String code = codeObj.toString(); 60 String code = codeObj.toString();
61 String id = idObj.toString(); 61 String id = idObj.toString();
62 log.info("marktingActivity ===>>> code ====>>> [{}]",code); 62 log.info("subject ===>>> code ====>>> [{}]",code);
63
64 LocalDateTime endTime = (LocalDateTime) map.get("endTime");
65
66 if (Objects.nonNull(endTime)) {
67 log.info("活动结束时间-->>{}",endTime);
68 // 活动结束删除所有的对应的key
69 if (endTime.compareTo(LocalDateTime.now()) <= 0) {
70 log.info("活动结束,活动结束时间30天后删除活动code对应的所有key");
71 if (endTime.plusDays(30).compareTo(LocalDateTime.now()) <= 0) {
72
73 Set<Object> keys = this.redisUtils.keys("*|"+code+"*");
74 if (CollectionUtils.isNotEmpty(keys)) {
75 for (Object key : keys) {
76 this.redisUtils.del(key.toString());
77 log.info("删除活动code对应的所有的key --->>{},成功",key);
78 }
79 }
80
81 }
82 continue;
83 }
84 }
85 63
86 // 小时pv、uv值 64 // 小时pv、uv值
87 PvUvHour pvUvHour1 = 65 PvUvHour pvUvHour1 =
...@@ -96,8 +74,8 @@ public class PvUvCalculateTask { ...@@ -96,8 +74,8 @@ public class PvUvCalculateTask {
96 log.info("hourUv ==>> {}", hourUv); 74 log.info("hourUv ==>> {}", hourUv);
97 75
98 PvUvHour pvUvHour = new PvUvHour(); 76 PvUvHour pvUvHour = new PvUvHour();
99 pvUvHour.setMarketingActivityId(Long.parseLong(id)); 77 pvUvHour.setSubjectId(Long.parseLong(id));
100 pvUvHour.setMarketingActivityCode(code); 78 pvUvHour.setSubjectCode(code);
101 pvUvHour.setDay(LocalDate.now().toString()); 79 pvUvHour.setDay(LocalDate.now().toString());
102 pvUvHour.setHour(LocalDateTime.now().getHour()); 80 pvUvHour.setHour(LocalDateTime.now().getHour());
103 pvUvHour.setPv(hourPv); 81 pvUvHour.setPv(hourPv);
...@@ -133,8 +111,8 @@ public class PvUvCalculateTask { ...@@ -133,8 +111,8 @@ public class PvUvCalculateTask {
133 111
134 if(Objects.isNull(pvUvDay1.getId())){ 112 if(Objects.isNull(pvUvDay1.getId())){
135 PvUvDay pvUvDay = new PvUvDay(); 113 PvUvDay pvUvDay = new PvUvDay();
136 pvUvDay.setMarketingActivityId(Long.parseLong(id)); 114 pvUvDay.setSubjectId(Long.parseLong(id));
137 pvUvDay.setMarketingActivityCode(code); 115 pvUvDay.setSubjectCode(code);
138 pvUvDay.setDay(LocalDate.now().toString()); 116 pvUvDay.setDay(LocalDate.now().toString());
139 117
140 Integer dayPv = this.getDayPV(code); 118 Integer dayPv = this.getDayPV(code);
...@@ -171,8 +149,8 @@ public class PvUvCalculateTask { ...@@ -171,8 +149,8 @@ public class PvUvCalculateTask {
171 PvUv pvUv1 = this.pvUvService.findByMarketingActivityId(Long.parseLong(id)); 149 PvUv pvUv1 = this.pvUvService.findByMarketingActivityId(Long.parseLong(id));
172 if(Objects.isNull(pvUv1.getId())){ 150 if(Objects.isNull(pvUv1.getId())){
173 PvUv pvUv = new PvUv(); 151 PvUv pvUv = new PvUv();
174 pvUv.setMarketingActivityId(Long.parseLong(id)); 152 pvUv.setSubjectId(Long.parseLong(id));
175 pvUv.setMarketingActivityCode(code); 153 pvUv.setSubjectCode(code);
176 154
177 Integer allPV = this.getAllPV(code); 155 Integer allPV = this.getAllPV(code);
178 Integer allUv = this.getAllUV(code); 156 Integer allUv = this.getAllUV(code);
...@@ -222,8 +200,8 @@ public class PvUvCalculateTask { ...@@ -222,8 +200,8 @@ public class PvUvCalculateTask {
222 } else { 200 } else {
223 hourStr = String.valueOf(hour); 201 hourStr = String.valueOf(hour);
224 } 202 }
225 log.info("getHourPV ==>> key ==>> {}", "MS_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr); 203 log.info("getHourPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr);
226 Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr, "ALL"); 204 Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr, "ALL");
227 if (Objects.nonNull(hourBtnClickPV)) { 205 if (Objects.nonNull(hourBtnClickPV)) {
228 return Integer.valueOf(hourBtnClickPV.toString()); 206 return Integer.valueOf(hourBtnClickPV.toString());
229 } 207 }
...@@ -232,8 +210,8 @@ public class PvUvCalculateTask { ...@@ -232,8 +210,8 @@ public class PvUvCalculateTask {
232 } 210 }
233 211
234 private Integer getDayPV(String code){ 212 private Integer getDayPV(String code){
235 log.info("getDayPV ==>> key ==>> {}", "MS_PV" + "|" + code + "|" + LocalDate.now()); 213 log.info("getDayPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code + "|" + LocalDate.now());
236 Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code + "|" + LocalDate.now(), "ALL"); 214 Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code + "|" + LocalDate.now(), "ALL");
237 if (Objects.nonNull(hourBtnClickPV)) { 215 if (Objects.nonNull(hourBtnClickPV)) {
238 return Integer.valueOf(hourBtnClickPV.toString()); 216 return Integer.valueOf(hourBtnClickPV.toString());
239 } 217 }
...@@ -242,8 +220,8 @@ public class PvUvCalculateTask { ...@@ -242,8 +220,8 @@ public class PvUvCalculateTask {
242 } 220 }
243 221
244 private Integer getAllPV(String code){ 222 private Integer getAllPV(String code){
245 log.info("getAllPV ==>> key ==>> {}", "MS_PV" + "|" + code); 223 log.info("getAllPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code);
246 Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code, "ALL"); 224 Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code, "ALL");
247 if (Objects.nonNull(hourBtnClickPV)) { 225 if (Objects.nonNull(hourBtnClickPV)) {
248 return Integer.valueOf(hourBtnClickPV.toString()); 226 return Integer.valueOf(hourBtnClickPV.toString());
249 } 227 }
...@@ -260,8 +238,8 @@ public class PvUvCalculateTask { ...@@ -260,8 +238,8 @@ public class PvUvCalculateTask {
260 } else { 238 } else {
261 hourStr = String.valueOf(hour); 239 hourStr = String.valueOf(hour);
262 } 240 }
263 log.info("getHourUV ==>> key ==>> {}", "MS_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr); 241 log.info("getHourUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr);
264 Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr, "ALL"); 242 Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr, "ALL");
265 if (Objects.nonNull(hourBtnClickUV)) { 243 if (Objects.nonNull(hourBtnClickUV)) {
266 return Integer.valueOf(hourBtnClickUV.toString()); 244 return Integer.valueOf(hourBtnClickUV.toString());
267 } 245 }
...@@ -271,8 +249,8 @@ public class PvUvCalculateTask { ...@@ -271,8 +249,8 @@ public class PvUvCalculateTask {
271 249
272 250
273 private Integer getDayUV(String code){ 251 private Integer getDayUV(String code){
274 log.info("getDayBtnClickUV ==>> key ==>> {}", "MS_UV" + "|" + code + "|" + LocalDate.now()); 252 log.info("getDayBtnClickUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code + "|" + LocalDate.now());
275 Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code + "|" + LocalDate.now(), "ALL"); 253 Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code + "|" + LocalDate.now(), "ALL");
276 if (Objects.nonNull(hourBtnClickUV)) { 254 if (Objects.nonNull(hourBtnClickUV)) {
277 return Integer.valueOf(hourBtnClickUV.toString()); 255 return Integer.valueOf(hourBtnClickUV.toString());
278 } 256 }
...@@ -282,8 +260,8 @@ public class PvUvCalculateTask { ...@@ -282,8 +260,8 @@ public class PvUvCalculateTask {
282 260
283 261
284 private Integer getAllUV(String code){ 262 private Integer getAllUV(String code){
285 log.info("getAllUV ==>> key ==>> {}", "MS_UV" + "|" + code); 263 log.info("getAllUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code);
286 Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code, "ALL"); 264 Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code, "ALL");
287 if (Objects.nonNull(hourBtnClickUV)) { 265 if (Objects.nonNull(hourBtnClickUV)) {
288 return Integer.valueOf(hourBtnClickUV.toString()); 266 return Integer.valueOf(hourBtnClickUV.toString());
289 } 267 }
...@@ -291,10 +269,10 @@ public class PvUvCalculateTask { ...@@ -291,10 +269,10 @@ public class PvUvCalculateTask {
291 return 0; 269 return 0;
292 } 270 }
293 271
294 private List<Map<String,Object>> getAllMarketingActivityCode(){ 272 private List<Map<String,Object>> getAllSubjectCode(){
295 273
296 String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code`, adr.`end_time` AS `endTime` FROM " + 274 String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code` FROM " +
297 " `act_marketing_activity` adr WHERE now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY)" + 275 " `x_subject` adr " +
298 " GROUP BY `code`"; 276 " GROUP BY `code`";
299 return this.jdbcTemplate.queryForList(sql); 277 return this.jdbcTemplate.queryForList(sql);
300 278
......
1 package com.topdraw.business.process.calculate.task;
2
3 import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
4 import com.topdraw.business.module.subscribe.all.service.SubscribePvUvService;
5 import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
6 import com.topdraw.business.module.subscribe.day.service.SubscribePvUvDayService;
7 import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
8 import com.topdraw.business.module.subscribe.hour.service.SubscribePvUvHourService;
9 import com.topdraw.util.TimestampUtil;
10 import lombok.extern.slf4j.Slf4j;
11 import org.apache.commons.collections4.CollectionUtils;
12 import org.apache.commons.collections4.MapUtils;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.jdbc.core.JdbcTemplate;
15 import org.springframework.stereotype.Service;
16 import org.springframework.transaction.annotation.Propagation;
17 import org.springframework.transaction.annotation.Transactional;
18 import redis.clients.jedis.Jedis;
19
20 import java.time.LocalDate;
21 import java.time.LocalDateTime;
22 import java.util.*;
23
24 /**
25 * @author :
26 * @description:
27 * @function :
28 * @date :Created in 2022/2/26 19:40
29 * @version: :
30 * @modified By:
31 * @since : modified in 2022/2/26 19:40
32 */
33
34 @Service
35 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
36 @Slf4j
37 public class SubscribeCalculateTask {
38
39 @Autowired
40 private Jedis redisUtils;
41 @Autowired
42 private JdbcTemplate jdbcTemplate;
43
44 @Autowired
45 private SubscribePvUvHourService subscribePvUvHourService;
46 @Autowired
47 private SubscribePvUvDayService subscribePvUvDayService;
48 @Autowired
49 private SubscribePvUvService subscribePvUvService;
50
51 private List<Map<String,Object>> getAllMarketingActivityCode(){
52
53 String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code`, adr.`end_time` AS `endTime` " +
54 " FROM `act_marketing_activity` adr WHERE now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY) GROUP BY `code`";
55 return this.jdbcTemplate.queryForList(sql);
56
57 }
58
59 private List<Map<String,Object>> getPackageInfo(String packageId){
60 String sql = "SELECT pa.`code` , pa.`name` FROM `x_package` AS pa WHERE product_id = '"+packageId+"'";
61 return this.jdbcTemplate.queryForList(sql);
62
63 }
64
65 private Long getHourBtnClickPV(String code, String packageId){
66 int hour = LocalDateTime.now().getHour();
67 String hourStr = "";
68 if (hour < 10) {
69 hourStr = "0"+hour;
70 } else {
71 hourStr = String.valueOf(hour);
72 }
73 log.info("getHourBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
74 Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
75 if (Objects.nonNull(hourBtnClickPV)) {
76 return (long) Integer.parseInt(hourBtnClickPV.toString());
77 }
78
79 return 0L;
80 }
81
82 private Long getDayBtnClickPV(String code, String packageId){
83 log.info("getDayBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now());
84 Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now(), "ALL");
85 if (Objects.nonNull(hourBtnClickPV)) {
86 return (long) Integer.parseInt(hourBtnClickPV.toString());
87 }
88
89 return 0L;
90 }
91
92 private Long getAllBtnClickPV(String code, String packageId){
93 log.info("getAllBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId);
94 Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId, "ALL");
95 if (Objects.nonNull(hourBtnClickPV)) {
96 return (long) Integer.parseInt(hourBtnClickPV.toString());
97 }
98
99 return 0L;
100 }
101
102
103 private Long getHourBtnClickUV(String code, String packageId){
104 int hour = LocalDateTime.now().getHour();
105 String hourStr = "";
106 if (hour < 10) {
107 hourStr = "0"+hour;
108 } else {
109 hourStr = String.valueOf(hour);
110 }
111 log.info("getHourBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
112 Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
113 if (Objects.nonNull(hourBtnClickUV)) {
114 return (long) Integer.parseInt(hourBtnClickUV.toString());
115 }
116
117 return 0L;
118 }
119
120
121 private Long getDayBtnClickUV(String code, String packageId){
122 log.info("getDayBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now());
123 Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now(), "ALL");
124 if (Objects.nonNull(hourBtnClickUV)) {
125 return (long) Integer.parseInt(hourBtnClickUV.toString());
126 }
127
128 return 0L;
129 }
130
131
132 private Long getAllBtnClickUV(String code, String packageId){
133 log.info("getAllBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId);
134 Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId, "ALL");
135 if (Objects.nonNull(hourBtnClickUV)) {
136 return (long) Integer.parseInt(hourBtnClickUV.toString());
137 }
138
139 return 0L;
140 }
141
142
143 private Long getHourSubscribeNum(String code, String packageId){
144
145 int hour = LocalDateTime.now().getHour();
146 String hourStr = "";
147 if (hour < 10) {
148 hourStr = "0"+hour;
149 } else {
150 hourStr = String.valueOf(hour);
151 }
152 log.info("getHourSubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
153 Object hourBtnClickPV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
154 if (Objects.nonNull(hourBtnClickPV)) {
155 return Long.parseLong(hourBtnClickPV.toString());
156 }
157
158 return 0L;
159 }
160
161 private Long getDaySubscribeNum(String code, String packageId, LocalDate localDate){
162 log.info("getDaySubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + localDate);
163 Object hourBtnClickUV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + localDate, "ALL");
164 if (Objects.nonNull(hourBtnClickUV)) {
165 return Long.parseLong(hourBtnClickUV.toString());
166 }
167 return 0L;
168 }
169
170 private Long getAllSubscribeNum(String code, String packageId){
171 log.info("getAllSubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId);
172 Object hourBtnClickUV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId, "ALL");
173 if (Objects.nonNull(hourBtnClickUV)) {
174 return Long.parseLong(hourBtnClickUV.toString());
175 }
176 return 0L;
177 }
178
179 private Set<String> getPackageIdByCode(String code) {
180 String key = "MS_PRODUCTID_SET|"+code;
181 log.info("getPackageIdByCode ==>> key ==>> {}", key);
182 return this.redisUtils.smembers(key);
183 }
184
185 public void calculateSubscribe2Mysql() {
186 List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode();
187 if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) {
188
189 for (Map<String, Object> map : allMarketingActivityCode) {
190
191 Object codeObj = map.get("code");
192 Object idObj = map.get("id");
193
194 if (Objects.nonNull(codeObj)&&Objects.nonNull(idObj)) {
195 String id = idObj.toString();
196 String code = codeObj.toString();
197 log.info("活动code-->>{}",code);
198 LocalDateTime endTime = (LocalDateTime) map.get("endTime");
199 if (Objects.nonNull(endTime)) {
200 log.info("活动结束时间-->>{}",endTime);
201 // 活动结束删除所有的对应的key
202 if (endTime.compareTo(LocalDateTime.now()) <= 0) {
203 log.info("活动结束,活动结束时间两天后删除活动code对应的所有key");
204 if (endTime.plusDays(2).compareTo(LocalDateTime.now()) <= 0) {
205
206 Set<String> keys = this.redisUtils.keys("*|"+code+"*");
207 if (CollectionUtils.isNotEmpty(keys)) {
208 for (Object key : keys) {
209 this.redisUtils.del(key.toString());
210 log.info("删除活动code对应的所有的key --->>{},成功",key);
211 }
212 }
213
214 }
215 continue;
216 }
217 }
218
219
220 Set<String> packageIds = this.getPackageIdByCode(code);
221 log.info("subscribe ==>> packageIdList ==>> {}", packageIds);
222 if (CollectionUtils.isEmpty(packageIds)) {
223 log.info(" ==>> 产品id列表,不存在");
224 continue;
225 }
226
227 for (String packageId: packageIds) {
228 //String packageId = packageIdStr.toString();
229 log.info("subscribe ==>> packageId ==>> {}", packageId);
230 List<Map<String, Object>> packageInfo = this.getPackageInfo(packageId);
231 log.info("subscribe ==>> packageInfo ==>> {}", packageInfo);
232 String packageCode = "";
233 String packageName = "";
234 if (CollectionUtils.isNotEmpty(packageInfo)) {
235 Map<String, Object> packageInfoMap1 = packageInfo.get(0);
236 if (MapUtils.isNotEmpty(packageInfoMap1)) {
237 if (Objects.nonNull(packageInfoMap1.get("code"))) {
238 packageCode = packageInfoMap1.get("code").toString();
239 }
240 if (Objects.nonNull(packageInfoMap1.get("name"))) {
241 packageName = packageInfoMap1.get("name").toString();
242 }
243 }
244
245 }
246
247 // 小时订购转换值
248 SubscribePvUvHour subscribePvUvHour =
249 this.subscribePvUvHourService.
250 findByMarketingActivityCodeAndPackageIdAndDayAndHour(code, packageId,
251 LocalDate.now().toString(), LocalDateTime.now().getHour());
252 log.info("subscribe ==>> subscribePvUvHour ==>> {}", subscribePvUvHour);
253 if (Objects.isNull(subscribePvUvHour.getId())) {
254
255 log.info("subscribe ==>> subscribePvUvHour ==>> create");
256 SubscribePvUvHour pvUvHour = new SubscribePvUvHour();
257 pvUvHour.setMarketingActivityId(Long.parseLong(id));
258 pvUvHour.setMarketingActivityCode(code);
259 pvUvHour.setDay(LocalDate.now().toString());
260 pvUvHour.setHour(LocalDateTime.now().getHour());
261 pvUvHour.setPackageId(packageId);
262 pvUvHour.setPackageCode(packageCode);
263 pvUvHour.setPackageName(packageName);
264
265 Long hourSubscribeNum = this.getHourSubscribeNum(code, packageId);
266 log.info("subscribe ==>> hourSubscribeNum ==>> {}", hourSubscribeNum);
267 pvUvHour.setSubscribeNum(hourSubscribeNum);
268
269 Long hourBtnClickPV = this.getHourBtnClickPV(code, packageId);
270 log.info("subscribe ==>> hourBtnClickPV ==>> {}", hourBtnClickPV);
271 pvUvHour.setBtnClickPv(hourBtnClickPV);
272
273 Long hourBtnClickUV = this.getHourBtnClickUV(code, packageId);
274 log.info("subscribe ==>> hourBtnClickUV ==>> {}", hourBtnClickUV);
275 pvUvHour.setBtnClickUv(hourBtnClickUV);
276 this.subscribePvUvHourService.create(pvUvHour);
277
278 } else {
279 log.info("subscribe ==>> subscribePvUvHour ==>> update");
280
281 Long hourSubscribeNum = this.getHourSubscribeNum(code, packageId);
282 log.info("subscribe ==>> hourSubscribeNum ==>> {}", hourSubscribeNum);
283
284
285 Long hourBtnClickPV = this.getHourBtnClickPV(code, packageId);
286 log.info("subscribe ==>> hourBtnClickPV ==>> {}", hourBtnClickPV);
287
288 Long hourBtnClickUV = this.getHourBtnClickUV(code, packageId);
289 log.info("subscribe ==>> hourBtnClickUV ==>> {}", hourBtnClickUV);
290
291
292 if (subscribePvUvHour.getBtnClickPv() >= hourBtnClickPV) {
293 hourBtnClickPV = subscribePvUvHour.getBtnClickPv();
294 }
295
296 if (subscribePvUvHour.getBtnClickUv() >= hourBtnClickUV) {
297 hourBtnClickUV = subscribePvUvHour.getBtnClickUv();
298 }
299
300 subscribePvUvHour.setBtnClickUv(hourBtnClickUV);
301 subscribePvUvHour.setBtnClickPv(hourBtnClickPV);
302 subscribePvUvHour.setSubscribeNum(hourSubscribeNum);
303 subscribePvUvHour.setUpdateTime(TimestampUtil.now());
304 log.info("subscribe ==>> subscribePvUvHour ==>> {}", subscribePvUvHour);
305 this.subscribePvUvHourService.update(subscribePvUvHour);
306
307
308 }
309
310 // 天订购转换值
311 SubscribePvUvDay subscribePvUvDay =
312 this.subscribePvUvDayService.
313 findByMarketingActivityCodeAndPackageIdAndDay(code, packageId,
314 LocalDate.now().toString());
315 log.info("subscribe ==>> subscribePvUvDay ==>> {}", subscribePvUvDay);
316 if (Objects.isNull(subscribePvUvDay.getId())) {
317 log.info("subscribe ==>> subscribePvUvDay ==>> create");
318 SubscribePvUvDay subscribePvUvDay_ = new SubscribePvUvDay();
319 subscribePvUvDay_.setMarketingActivityId(Long.parseLong(id));
320 subscribePvUvDay_.setMarketingActivityCode(code);
321 subscribePvUvDay_.setDay(LocalDate.now().toString());
322 subscribePvUvDay_.setPackageId(packageId);
323 subscribePvUvDay_.setPackageCode(packageCode);
324 subscribePvUvDay_.setPackageName(packageName);
325
326 Long daySubscribeNum = this.getDaySubscribeNum(code, packageId, LocalDate.now());
327 log.info("subscribe ==>> daySubscribeNum ==>> {}", daySubscribeNum);
328 subscribePvUvDay_.setSubscribeNum(daySubscribeNum);
329
330 Long dayBtnClickPV = this.getDayBtnClickPV(code, packageId);
331 log.info("subscribe ==>> dayBtnClickPV ==>> {}", dayBtnClickPV);
332 subscribePvUvDay_.setBtnClickPv(dayBtnClickPV);
333
334 Long dayBtnClickUV = this.getDayBtnClickUV(code, packageId);
335 log.info("subscribe ==>> dayBtnClickUV ==>> {}", dayBtnClickUV);
336 subscribePvUvDay_.setBtnClickUv(dayBtnClickUV);
337
338 log.info("subscribe ==>> subscribePvUvDay_ ==>> {}", subscribePvUvDay_);
339 this.subscribePvUvDayService.create(subscribePvUvDay_);
340
341 } else {
342
343 log.info("subscribe ==>> subscribePvUvDay ==>> update");
344 Long daySubscribeNum = this.getDaySubscribeNum(code, packageId, LocalDate.now());
345 log.info("subscribe ==>> daySubscribeNum ==>> {}", daySubscribeNum);
346 Long dayBtnClickPV = this.getDayBtnClickPV(code, packageId);
347 log.info("subscribe ==>> dayBtnClickPV ==>> {}", dayBtnClickPV);
348 Long dayBtnClickUV = this.getDayBtnClickUV(code, packageId);
349 log.info("subscribe ==>> dayBtnClickUV ==>> {}", dayBtnClickUV);
350
351 if (subscribePvUvDay.getBtnClickPv() >= dayBtnClickPV) {
352 dayBtnClickPV = subscribePvUvDay.getBtnClickPv();
353 }
354
355 if (subscribePvUvDay.getBtnClickUv() >= dayBtnClickUV) {
356 dayBtnClickUV = subscribePvUvDay.getBtnClickUv();
357 }
358
359 subscribePvUvDay.setSubscribeNum(daySubscribeNum);
360 subscribePvUvDay.setBtnClickUv(dayBtnClickUV);
361 subscribePvUvDay.setBtnClickPv(dayBtnClickPV);
362 subscribePvUvDay.setUpdateTime(TimestampUtil.now());
363 log.info("subscribe ==>> subscribePvUvDay ==>> {}", subscribePvUvDay);
364 this.subscribePvUvDayService.update(subscribePvUvDay);
365
366
367 }
368
369 // 总订购转换值
370 SubscribePvUv subscribePvUv =
371 this.subscribePvUvService.
372 findByMarketingActivityCodeAndPackageId(code, packageId);
373 log.info("subscribe ==>> subscribePvUv ==>> {}", subscribePvUv);
374 if (Objects.isNull(subscribePvUv.getId())) {
375 log.info("subscribe ==>> subscribePvUv ==>> create");
376 SubscribePvUv subscribePvUv_ = new SubscribePvUv();
377 subscribePvUv_.setMarketingActivityId(Long.parseLong(id));
378 subscribePvUv_.setMarketingActivityCode(code);
379 subscribePvUv_.setPackageId(packageId);
380 subscribePvUv_.setPackageCode(packageCode);
381 subscribePvUv_.setPackageName(packageName);
382
383 Long allSubscribeNum = this.getAllSubscribeNum(code, packageId);
384 log.info("subscribe ==>> allSubscribeNum ==>> {}",allSubscribeNum);
385 subscribePvUv_.setSubscribeNum(allSubscribeNum);
386
387 Long allBtnClickPV = this.getAllBtnClickPV(code, packageId);
388 log.info("subscribe ==>> allBtnClickPV ==>> {}",allBtnClickPV);
389 subscribePvUv_.setBtnClickPv(allBtnClickPV);
390
391 Long allBtnClickUV = this.getAllBtnClickUV(code, packageId);
392 log.info("subscribe ==>> allBtnClickUV ==>> {}",allBtnClickUV);
393 subscribePvUv_.setBtnClickUv(allBtnClickUV);
394
395 log.info("subscribe ==>> subscribePvUv_ ==>> {}",subscribePvUv_);
396 this.subscribePvUvService.create(subscribePvUv_);
397
398 } else {
399 log.info("subscribe ==>> subscribePvUv ==>> update");
400 Long allSubscribeNum = this.getAllSubscribeNum(code, packageId);
401 log.info("subscribe ==>> allSubscribeNum ==>> {}", allSubscribeNum);
402 Long allBtnClickPV = this.getAllBtnClickPV(code, packageId);
403 log.info("subscribe ==>> allBtnClickPV ==>> {}", allBtnClickPV);
404 Long allBtnClickUV = this.getAllBtnClickUV(code, packageId);
405 log.info("subscribe ==>> allBtnClickUV ==>> {}", allBtnClickUV);
406
407
408 if (subscribePvUv.getBtnClickPv() >= allBtnClickPV) {
409 allBtnClickPV = subscribePvUv.getBtnClickPv();
410 }
411
412 if (subscribePvUv.getBtnClickUv() >= allBtnClickUV) {
413 allBtnClickUV = subscribePvUv.getBtnClickUv();
414 }
415
416 subscribePvUv.setBtnClickUv(allBtnClickUV);
417 subscribePvUv.setSubscribeNum(allSubscribeNum);
418 subscribePvUv.setBtnClickPv(allBtnClickPV);
419 subscribePvUv.setUpdateTime(TimestampUtil.now());
420 log.info("subscribe ==>> subscribePvUv ==>> {}", subscribePvUv);
421 this.subscribePvUvService.update(subscribePvUv);
422
423 }
424
425 }
426
427 }
428
429 }
430
431 }
432
433 }
434
435 }
...@@ -35,11 +35,11 @@ public class TransferActivityBtnClickPvUvScheduleTask { ...@@ -35,11 +35,11 @@ public class TransferActivityBtnClickPvUvScheduleTask {
35 } 35 }
36 36
37 /** 37 /**
38 * 统计订购转换数据 38 * 统计按钮点击数据
39 */ 39 */
40 @Scheduled(cron = "#{transferActivityBtnClickPvUvScheduleTask.cron()}") 40 @Scheduled(cron = "#{transferActivityBtnClickPvUvScheduleTask.cron()}")
41 public void calculateSubscribe2Mysql(){ 41 public void calculateSubscribe2Mysql(){
42 log.info("活动按钮点击次数统计 ===>>> 开始 !!!" + LocalDateTime.now()); 42 log.info("专题按钮点击次数统计 ===>>> 开始 !!!" + LocalDateTime.now());
43 this.activityBtnClickPvUcCalculateTask.calculateRedisData2Mysql(); 43 this.activityBtnClickPvUcCalculateTask.calculateRedisData2Mysql();
44 } 44 }
45 45
......
...@@ -39,7 +39,7 @@ public class TransferScheduleTask { ...@@ -39,7 +39,7 @@ public class TransferScheduleTask {
39 */ 39 */
40 @Scheduled(cron = "#{transferScheduleTask.cron()}") 40 @Scheduled(cron = "#{transferScheduleTask.cron()}")
41 public void calculatePvUv2Mysql(){ 41 public void calculatePvUv2Mysql(){
42 log.info("pv、uv统计 ===>>> 开始 !!!" + LocalDateTime.now()); 42 log.info("专题pv、uv统计 ===>>> 开始 !!!" + LocalDateTime.now());
43 this.pvUvCalculateTask.calculateRedisData2Mysql(); 43 this.pvUvCalculateTask.calculateRedisData2Mysql();
44 } 44 }
45 45
......
1 package com.topdraw.schedule;
2
3 import com.topdraw.business.process.calculate.task.SubscribeCalculateTask;
4 import lombok.extern.slf4j.Slf4j;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.beans.factory.annotation.Value;
7 import org.springframework.scheduling.annotation.EnableScheduling;
8 import org.springframework.scheduling.annotation.Scheduled;
9 import org.springframework.stereotype.Component;
10
11 import java.time.LocalDateTime;
12
13 /**
14 * @author :
15 * @description:
16 * @function :
17 * @date :Created in 2022/2/26 19:44
18 * @version: :
19 * @modified By:
20 * @since : modified in 2022/2/26 19:44
21 */
22 @Component
23 @Slf4j
24 @EnableScheduling
25 public class TransferSubscribeScheduleTask {
26
27 @Autowired
28 private SubscribeCalculateTask subscribeCalculateTask;
29
30 @Value("${cronSubscribe:50 0/5 * * * ?}")
31 // @Value("0/5 * * * * ?")
32 private String cron;
33
34 public String cron(){
35 return cron;
36 }
37
38 /**
39 * 统计订购转换数据
40 */
41 @Scheduled(cron = "#{transferSubscribeScheduleTask.cron()}")
42 // @Scheduled(cron = "0/5 * * * * ?")
43 public void calculateSubscribe2Mysql(){
44 log.info("订购数据统计 ===>>> 开始 !!!" + LocalDateTime.now());
45 this.subscribeCalculateTask.calculateSubscribe2Mysql();
46 }
47
48 }