Commit 0fe13b58 0fe13b58929a62f7c38aa9cc4490a4998c463701 by 张云鹏

专题数据统计

1 parent 9d6228fa
Showing 48 changed files with 314 additions and 1864 deletions
package com.topdraw.business.config;
public class Constant {
public final String SUBJECT_PV = "SUBJECT_PV";
public final String SUBJECT_UV = "SUBJECT_UV";
public final String SUBJECT_BTN_CLICK_PV = "SUBJECT_BTN_CLICK_PV";
public final String SUBJECT_BTN_CLICK_UV = "SUBJECT_BTN_CLICK_UV";
}
......@@ -20,7 +20,7 @@ import java.sql.Timestamp;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_tpl_param_click")
@Table(name="sub_tpl_param_click")
public class ActTplParamClick implements Serializable {
// ID
......@@ -29,13 +29,12 @@ public class ActTplParamClick implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// subject id
@Column(name = "subject_id", nullable = false)
private Long subjectId;
// 活动事件id
@Column(name = "activity_id", nullable = false)
private Long activityId;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// 活动按钮id
@Column(name = "template_param_value_id", nullable = false)
......@@ -53,6 +52,12 @@ public class ActTplParamClick implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
......@@ -12,5 +12,5 @@ import java.util.Optional;
*/
public interface ActivityBtnPvUvRepository extends JpaRepository<ActTplParamClick, Long>, JpaSpecificationExecutor<ActTplParamClick> {
Optional<ActTplParamClick> findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId);
Optional<ActTplParamClick> findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId);
}
......
......@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvService {
void update(ActTplParamClick resources);
ActTplParamClick findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId);
ActTplParamClick findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId);
}
......
package com.topdraw.business.module.activitybtn.all.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @author XiangHan
* @date 2022-02-26
*/
@Data
public class ActTplParamClickDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 活动事件id
private Long activityId;
// 活动按钮id
private Long templateParamValueId;
// 显示用名称,表示哪个按钮或者内容
private String name;
// pv值
private Long pv;
// uv值
private Long uv;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
......@@ -36,8 +36,8 @@ public class ActivityBtnPvUvServiceImpl implements ActivityBtnPvUvService {
}
@Override
public ActTplParamClick findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(Long marketingActivityId, Long activityId, Long templateParamValueId) {
return PvUvRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(marketingActivityId, activityId, templateParamValueId).orElseGet(ActTplParamClick::new);
public ActTplParamClick findBySubjectIdAndTemplateParamValueId(Long subjectId, Long templateParamValueId) {
return PvUvRepository.findBySubjectIdAndTemplateParamValueId(subjectId, templateParamValueId).orElseGet(ActTplParamClick::new);
}
}
......
......@@ -20,7 +20,7 @@ import java.sql.Timestamp;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_tpl_param_click_day")
@Table(name="sub_tpl_param_click_day")
public class ActTplParamClickDay implements Serializable {
// ID
......@@ -29,13 +29,13 @@ public class ActTplParamClickDay implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// subject id
@Column(name = "subject_id", nullable = false)
private Long subjectId;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// 活动事件id
@Column(name = "activity_id", nullable = false)
private Long activityId;
// 显示用名称,表示哪个按钮或者内容
@Column(name = "name", nullable = false)
......@@ -57,6 +57,12 @@ public class ActTplParamClickDay implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
......@@ -12,6 +12,6 @@ import java.util.Optional;
*/
public interface ActivityBtnPvUvDayRepository extends JpaRepository<ActTplParamClickDay, Long>, JpaSpecificationExecutor<ActTplParamClickDay> {
Optional<ActTplParamClickDay> findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long paramValueId, String day);
Optional<ActTplParamClickDay> findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long paramValueId, String day);
}
......
......@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvDayService {
void update(ActTplParamClickDay resources);
ActTplParamClickDay findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long templateParamValueId, String toString);
ActTplParamClickDay findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long templateParamValueId, String toString);
}
......
package com.topdraw.business.module.activitybtn.day.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @author XiangHan
* @date 2022-02-26
*/
@Data
public class ActTplParamClickDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 活动事件id
private Long activityId;
// 活动按钮id
private Long templateParamValueId;
// 显示用名称,表示哪个按钮或者内容
private String name;
// 日期
private String day;
// pv值
private Integer pv;
// uv值
private Integer uv;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
......@@ -36,9 +36,9 @@ public class ActivityBtnPvUvDayServiceImpl implements ActivityBtnPvUvDayService
}
@Override
public ActTplParamClickDay findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(Long marketingActivityId, Long activityId, Long templateParamValueId, String day) {
return this.pvUvDayRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(marketingActivityId,
activityId, templateParamValueId, day).orElseGet(ActTplParamClickDay::new);
public ActTplParamClickDay findBySubjectIdAndTemplateParamValueIdAndDay(Long subjectId, Long templateParamValueId, String day) {
return this.pvUvDayRepository.findBySubjectIdAndTemplateParamValueIdAndDay(subjectId,
templateParamValueId, day).orElseGet(ActTplParamClickDay::new);
}
......
......@@ -20,7 +20,7 @@ import java.sql.Timestamp;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_tpl_param_click_hour")
@Table(name="sub_tpl_param_click_hour")
public class ActTplParamClickHour implements Serializable {
// ID
......@@ -29,13 +29,12 @@ public class ActTplParamClickHour implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// subject id
@Column(name = "subject_id", nullable = false)
private Long subjectId;
// 活动事件id
@Column(name = "activity_id", nullable = false)
private Long activityId;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// 显示用名称,表示哪个按钮或者内容
@Column(name = "name", nullable = false)
......@@ -61,6 +60,12 @@ public class ActTplParamClickHour implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
......@@ -12,5 +12,5 @@ import java.util.Optional;
*/
public interface ActivityBtnPvUvHourRepository extends JpaRepository<ActTplParamClickHour, Long>, JpaSpecificationExecutor<ActTplParamClickHour> {
Optional<ActTplParamClickHour> findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long activityId, Long paramValueId, String day, int hour);
Optional<ActTplParamClickHour> findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long subjectId, Long paramValueId, String day, int hour);
}
......
......@@ -12,5 +12,5 @@ public interface ActivityBtnPvUvHourService {
void update(ActTplParamClickHour resources);
ActTplParamClickHour findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long activityId, Long paramValueId, String day, int hour);
ActTplParamClickHour findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId, Long paramValueId, String day, int hour);
}
......
package com.topdraw.business.module.activitybtn.hour.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @author XiangHan
* @date 2022-02-26
*/
@Data
public class ActTplParamClickHourDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 活动事件id
private Long activityId;
// 活动按钮id
private Long templateParamValueId;
// 显示用名称,表示哪个按钮或者内容
private String name;
// 日期
private String day;
// 小时(0-23)
private Integer hour;
// pv值
private Integer pv;
// uv值
private Integer uv;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
......@@ -37,10 +37,8 @@ public class ActivityBtnPvUvHourServiceImpl implements ActivityBtnPvUvHourServic
}
@Override
public ActTplParamClickHour findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(Long marketingActivityId,
Long activityId, Long paramValueId,
String day, int hour) {
return PvUvHourRepository.findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(marketingActivityId, activityId,
public ActTplParamClickHour findBySubjectIdAndTemplateParamValueIdAndDayAndHour(Long subjectId, Long paramValueId, String day, int hour) {
return PvUvHourRepository.findBySubjectIdAndTemplateParamValueIdAndDayAndHour(subjectId,
paramValueId, day, hour).
orElseGet(ActTplParamClickHour::new);
}
......
package com.topdraw.business.module.subscribe.all.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_subscribe_pv_uv")
public class SubscribePvUv implements Serializable {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
// 产品包id
@Column(name = "package_id", nullable = false)
private String packageId;
// 产品包标识
@Column(name = "package_code")
private String packageCode;
// 产品包名称
@Column(name = "package_name")
private String packageName;
// 订购按钮总点击量
@Column(name = "btn_click_pv", nullable = false)
private Long btnClickPv;
// 订购按钮总点击人数
@Column(name = "btn_click_uv", nullable = false)
private Long btnClickUv;
// 订购成功人数
@Column(name = "subscribe_num", nullable = false)
private Long subscribeNum;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(SubscribePvUv source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.subscribe.all.repository;
import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvRepository extends JpaRepository<SubscribePvUv, Long>, JpaSpecificationExecutor<SubscribePvUv> {
Optional<SubscribePvUv> findByMarketingActivityCodeAndPackageId(String code, String packageId);
}
package com.topdraw.business.module.subscribe.all.service;
import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvService {
/**
* 根据ID查询
* @param id ID
* @return SubscribePvUvDTO
*/
SubscribePvUvDTO findById(Long id);
void create(SubscribePvUv resources);
void update(SubscribePvUv resources);
void delete(Long id);
SubscribePvUv findByMarketingActivityCodeAndPackageId(String code, String packageId);
}
package com.topdraw.business.module.subscribe.all.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Data
public class SubscribePvUvDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 营销活动标识
private String marketingActivityCode;
// 产品包id
private String packageId;
// 产品包标识
private String packageCode;
// 产品包名称
private String packageName;
// 订购按钮总点击量
private Long btnClickPv;
// 订购按钮总点击人数
private Long btnClickUv;
// 订购成功人数
private Long subscribeNum;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.subscribe.all.service.impl;
import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.subscribe.all.repository.SubscribePvUvRepository;
import com.topdraw.business.module.subscribe.all.service.SubscribePvUvService;
import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
import com.topdraw.business.module.subscribe.all.service.mapper.SubscribePvUvMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class SubscribePvUvServiceImpl implements SubscribePvUvService {
@Autowired
private SubscribePvUvRepository SubscribePvUvRepository;
@Autowired
private SubscribePvUvMapper SubscribePvUvMapper;
@Override
public SubscribePvUvDTO findById(Long id) {
SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(id).orElseGet(SubscribePvUv::new);
ValidationUtil.isNull(SubscribePvUv.getId(),"SubscribePvUv","id",id);
return SubscribePvUvMapper.toDto(SubscribePvUv);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(SubscribePvUv resources) {
SubscribePvUvRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SubscribePvUv resources) {
SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(resources.getId()).orElseGet(SubscribePvUv::new);
ValidationUtil.isNull( SubscribePvUv.getId(),"SubscribePvUv","id",resources.getId());
SubscribePvUv.copy(resources);
SubscribePvUvRepository.save(SubscribePvUv);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
SubscribePvUv SubscribePvUv = SubscribePvUvRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUv.class, id), 1));
SubscribePvUvRepository.delete(SubscribePvUv);
}
@Override
public SubscribePvUv findByMarketingActivityCodeAndPackageId(String code, String packageId) {
SubscribePvUv SubscribePvUvDay =
SubscribePvUvRepository.findByMarketingActivityCodeAndPackageId(code, packageId).orElseGet(SubscribePvUv::new);
return SubscribePvUvDay;
}
}
package com.topdraw.business.module.subscribe.all.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
import com.topdraw.business.module.subscribe.all.service.dto.SubscribePvUvDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface SubscribePvUvMapper extends BaseMapper<SubscribePvUvDTO, SubscribePvUv> {
}
package com.topdraw.business.module.subscribe.day.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_subscribe_pv_uv_day")
public class SubscribePvUvDay implements Serializable {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
// 产品包id
@Column(name = "package_id", nullable = false)
private String packageId;
// 产品包标识
@Column(name = "package_code")
private String packageCode;
// 产品包名称
@Column(name = "package_name")
private String packageName;
// 日期
@Column(name = "day", nullable = false)
private String day;
// 订购按钮总点击量
@Column(name = "btn_click_pv", nullable = false)
private Long btnClickPv;
// 订购按钮总点击人数
@Column(name = "btn_click_uv", nullable = false)
private Long btnClickUv;
// 订购成功人数
@Column(name = "subscribe_num", nullable = false)
private Long subscribeNum;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(SubscribePvUvDay source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.subscribe.day.repository;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvDayRepository extends JpaRepository<SubscribePvUvDay, Long>, JpaSpecificationExecutor<SubscribePvUvDay> {
Optional<SubscribePvUvDay> findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day);
}
package com.topdraw.business.module.subscribe.day.service;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvDayService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(SubscribePvUvDayQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<SubscribePvUvDayDTO>
*/
List<SubscribePvUvDayDTO> queryAll(SubscribePvUvDayQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return SubscribePvUvDayDTO
*/
SubscribePvUvDayDTO findById(Long id);
void create(SubscribePvUvDay resources);
void update(SubscribePvUvDay resources);
void delete(Long id);
SubscribePvUvDay findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day);
void updateByMarketingActivityCodeAndDayAndPackageId(SubscribePvUvDay subscribePvUvDay);
}
package com.topdraw.business.module.subscribe.day.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Data
public class SubscribePvUvDayDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 营销活动标识
private String marketingActivityCode;
// 产品包id
private String packageId;
// 产品包标识
private String packageCode;
// 产品包名称
private String packageName;
// 日期
private String day;
// 订购按钮总点击量
private Long btnClickPv;
// 订购按钮总点击人数
private Long btnClickUv;
// 订购成功人数
private Long subscribeNum;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.subscribe.day.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Data
public class SubscribePvUvDayQueryCriteria{
}
package com.topdraw.business.module.subscribe.day.service.impl;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.module.subscribe.day.repository.SubscribePvUvDayRepository;
import com.topdraw.business.module.subscribe.day.service.SubscribePvUvDayService;
import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayQueryCriteria;
import com.topdraw.business.module.subscribe.day.service.mapper.SubscribePvUvDayMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class SubscribePvUvDayServiceImpl implements SubscribePvUvDayService {
@Autowired
private SubscribePvUvDayRepository SubscribePvUvDayRepository;
@Autowired
private SubscribePvUvDayMapper SubscribePvUvDayMapper;
@Override
public Map<String, Object> queryAll(SubscribePvUvDayQueryCriteria criteria, Pageable pageable) {
Page<SubscribePvUvDay> page = SubscribePvUvDayRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(SubscribePvUvDayMapper::toDto));
}
@Override
public List<SubscribePvUvDayDTO> queryAll(SubscribePvUvDayQueryCriteria criteria) {
return SubscribePvUvDayMapper.toDto(SubscribePvUvDayRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Override
public SubscribePvUvDayDTO findById(Long id) {
SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(id).orElseGet(SubscribePvUvDay::new);
ValidationUtil.isNull(SubscribePvUvDay.getId(),"SubscribePvUvDay","id",id);
return SubscribePvUvDayMapper.toDto(SubscribePvUvDay);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(SubscribePvUvDay resources) {
SubscribePvUvDayRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SubscribePvUvDay resources) {
SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(resources.getId()).orElseGet(SubscribePvUvDay::new);
ValidationUtil.isNull( SubscribePvUvDay.getId(),"SubscribePvUvDay","id",resources.getId());
SubscribePvUvDay.copy(resources);
SubscribePvUvDayRepository.save(SubscribePvUvDay);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
SubscribePvUvDay SubscribePvUvDay = SubscribePvUvDayRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUvDay.class, id), 1));
SubscribePvUvDayRepository.delete(SubscribePvUvDay);
}
@Override
public SubscribePvUvDay findByMarketingActivityCodeAndPackageIdAndDay(String code, String packageId, String day) {
SubscribePvUvDay SubscribePvUvDay =
SubscribePvUvDayRepository.findByMarketingActivityCodeAndPackageIdAndDay(code, packageId, day).orElseGet(SubscribePvUvDay::new);
return SubscribePvUvDay;
}
@Override
public void updateByMarketingActivityCodeAndDayAndPackageId(SubscribePvUvDay subscribePvUvDay) {
}
}
package com.topdraw.business.module.subscribe.day.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import com.topdraw.business.module.subscribe.day.service.dto.SubscribePvUvDayDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface SubscribePvUvDayMapper extends BaseMapper<SubscribePvUvDayDTO, SubscribePvUvDay> {
}
package com.topdraw.business.module.subscribe.hour.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_subscribe_pv_uv_hour")
public class SubscribePvUvHour implements Serializable {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
// 产品包id
@Column(name = "package_id", nullable = false)
private String packageId;
// 产品包标识
@Column(name = "package_code")
private String packageCode;
// 产品包名称
@Column(name = "package_name")
private String packageName;
// 日期
@Column(name = "day", nullable = false)
private String day;
// 小时(0-23)
@Column(name = "hour", nullable = false)
private Integer hour;
// 订购按钮总点击量
@Column(name = "btn_click_pv", nullable = false)
private Long btnClickPv;
// 订购按钮总点击人数
@Column(name = "btn_click_uv", nullable = false)
private Long btnClickUv;
// 订购成功人数
@Column(name = "subscribe_num", nullable = false)
private Long subscribeNum;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(SubscribePvUvHour source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.subscribe.hour.repository;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
import java.util.Optional;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvHourRepository extends JpaRepository<SubscribePvUvHour, Long>, JpaSpecificationExecutor<SubscribePvUvHour> {
Optional<SubscribePvUvHour> findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String day, int hour);
}
package com.topdraw.business.module.subscribe.hour.service;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
* @date 2022-04-20
*/
public interface SubscribePvUvHourService {
/**
* 根据ID查询
* @param id ID
* @return SubscribePvUvHourDTO
*/
SubscribePvUvHourDTO findById(Long id);
void create(SubscribePvUvHour resources);
void update(SubscribePvUvHour resources);
void delete(Long id);
SubscribePvUvHour findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String toString, int hour);
void updateByMarketingActivityCodeAndDayAndHourAndPackageId(SubscribePvUvHour subscribePvUvHour);
}
package com.topdraw.business.module.subscribe.hour.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Data
public class SubscribePvUvHourDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
// 营销活动标识
private String marketingActivityCode;
// 产品包id
private String packageId;
// 产品包标识
private String packageCode;
// 产品包名称
private String packageName;
// 日期
private String day;
// 小时(0-23)
private Integer hour;
// 订购按钮总点击量
private Long btnClickPv;
// 订购按钮总点击人数
private Long btnClickUv;
// 订购成功人数
private Long subscribeNum;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.subscribe.hour.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Data
public class SubscribePvUvHourQueryCriteria{
}
package com.topdraw.business.module.subscribe.hour.service.impl;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.module.subscribe.hour.repository.SubscribePvUvHourRepository;
import com.topdraw.business.module.subscribe.hour.service.SubscribePvUvHourService;
import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourQueryCriteria;
import com.topdraw.business.module.subscribe.hour.service.mapper.SubscribePvUvHourMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class SubscribePvUvHourServiceImpl implements SubscribePvUvHourService {
@Autowired
private SubscribePvUvHourRepository SubscribePvUvHourRepository;
@Autowired
private SubscribePvUvHourMapper SubscribePvUvHourMapper;
@Override
public SubscribePvUvHourDTO findById(Long id) {
SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(id).orElseGet(SubscribePvUvHour::new);
ValidationUtil.isNull(SubscribePvUvHour.getId(),"SubscribePvUvHour","id",id);
return SubscribePvUvHourMapper.toDto(SubscribePvUvHour);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(SubscribePvUvHour resources) {
SubscribePvUvHourRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SubscribePvUvHour resources) {
SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(resources.getId()).orElseGet(SubscribePvUvHour::new);
ValidationUtil.isNull( SubscribePvUvHour.getId(),"SubscribePvUvHour","id",resources.getId());
SubscribePvUvHour.copy(resources);
SubscribePvUvHourRepository.save(SubscribePvUvHour);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
SubscribePvUvHour SubscribePvUvHour = SubscribePvUvHourRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", SubscribePvUvHour.class, id), 1));
SubscribePvUvHourRepository.delete(SubscribePvUvHour);
}
@Override
public SubscribePvUvHour findByMarketingActivityCodeAndPackageIdAndDayAndHour(String code, String packageId, String day, int hour) {
SubscribePvUvHour SubscribePvUvHour =
SubscribePvUvHourRepository.findByMarketingActivityCodeAndPackageIdAndDayAndHour(code, packageId, day, hour).orElseGet(SubscribePvUvHour::new);
return SubscribePvUvHour;
}
@Override
public void updateByMarketingActivityCodeAndDayAndHourAndPackageId(SubscribePvUvHour subscribePvUvHour) {
}
}
package com.topdraw.business.module.subscribe.hour.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import com.topdraw.business.module.subscribe.hour.service.dto.SubscribePvUvHourDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-04-20
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface SubscribePvUvHourMapper extends BaseMapper<SubscribePvUvHourDTO, SubscribePvUvHour> {
}
......@@ -20,7 +20,7 @@ import java.io.Serializable;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_pv_uv")
@Table(name="sub_pv_uv")
public class PvUv implements Serializable {
// ID
......@@ -29,13 +29,11 @@ public class PvUv implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
@Column(name = "subject_id", nullable = false)
private Long subjectId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// pv值
@Column(name = "pv", nullable = false)
......@@ -45,6 +43,12 @@ public class PvUv implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
package com.topdraw.business.module.uv.all.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
......@@ -15,11 +16,13 @@ public class PvUvDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
private Long subjectId;
private String subjectCode;
private Long lpId;
// 营销活动标识
private String marketingActivityCode;
private Long siteId;
// pv值
private Long pv;
......
......@@ -20,7 +20,7 @@ import java.io.Serializable;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_pv_uv_day")
@Table(name="sub_pv_uv_day")
public class PvUvDay implements Serializable {
// ID
......@@ -29,13 +29,11 @@ public class PvUvDay implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
@Column(name = "subject_id", nullable = false)
private Long subjectId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// 日期
@Column(name = "day", nullable = false)
......@@ -49,6 +47,12 @@ public class PvUvDay implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
......@@ -15,11 +15,13 @@ public class PvUvDayDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
private Long subjectId;
// 营销活动标识
private String marketingActivityCode;
private String subjectCode;
private Long lpId;
private Long siteId;
// 日期
private String day;
......
......@@ -20,7 +20,7 @@ import java.io.Serializable;
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="act_pv_uv_hour")
@Table(name="sub_pv_uv_hour")
public class PvUvHour implements Serializable {
// ID
......@@ -29,13 +29,11 @@ public class PvUvHour implements Serializable {
@Column(name = "id")
private Long id;
// 营销活动ID
@Column(name = "marketing_activity_id", nullable = false)
private Long marketingActivityId;
@Column(name = "subject_id", nullable = false)
private Long subjectId;
// 营销活动标识
@Column(name = "marketing_activity_code", nullable = false)
private String marketingActivityCode;
@Column(name = "subject_code", nullable = false)
private String subjectCode;
// 日期
@Column(name = "day", nullable = false)
......@@ -53,6 +51,12 @@ public class PvUvHour implements Serializable {
@Column(name = "uv", nullable = false)
private Integer uv;
@Column(name = "lp_id")
private Long lpId;
@Column(name = "site_id")
private Long siteId;
// 创建时间
@CreatedDate
@Column(name = "create_time")
......
......@@ -15,11 +15,13 @@ public class PvUvHourDTO implements Serializable {
// ID
private Long id;
// 营销活动ID
private Long marketingActivityId;
private Long subjectId;
// 营销活动标识
private String marketingActivityCode;
private String subjectCode;
private Long lpId;
private Long siteId;
// 日期
private String day;
......
......@@ -51,251 +51,200 @@ public class ActivityBtnClickPvUcCalculateTask {
private ActivityBtnPvUvHourService activityBtnPvUvHourService;
private List<Map<String,Object>> getAllMarketingActivityCode(){
String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` , tadr.`end_time` AS `endTime` FROM `act_marketing_activity` tadr WHERE " +
" now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY) GROUP BY `code`";
private List<Map<String,Object>> getAllSubjectCode(){
String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` FROM `x_subject` tadr " +
" GROUP BY `code`";
return this.jdbcTemplate.queryForList(sql);
}
public void calculateRedisData2Mysql() {
List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode();
List<Map<String, Object>> allMarketingActivityCode = this.getAllSubjectCode();
if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) {
for (Map<String, Object> map : allMarketingActivityCode) {
// 营销活动code
// 专题code
Object codeObj = map.get("code");
Object idObj = map.get("id");
if (Objects.nonNull(codeObj) && Objects.nonNull(idObj)) {
String code = codeObj.toString();
String id = idObj.toString();
log.info("marktingActivity ===>>> code ====>>> [{}]", code);
log.info("subject ===>>> code ====>>> [{}]", code);
String subjectCode ="";
Long subjectId = 0L;
Long paramValueId = 0L;
String name = "";
// 获取此专题活动对应的参数,格式 事件code-按钮id
Set<String> codeAndBtnIds = this.redisUtils.smembers("SUBJECT_CODE|"+code);
if (Objects.nonNull(codeAndBtnIds) && CollectionUtils.isNotEmpty(codeAndBtnIds)){
for (String s1 : codeAndBtnIds) {
log.info("codeAndBtnId ==>> {}", s1);
String[] split = s1.split("#");
if (split.length == 0) {
split = s1.split("-");
}
LocalDateTime endTime = (LocalDateTime) map.get("endTime");
if (split.length == 0) {
continue;
}
log.info("分割后的结果 ==>> {}", split);
try {
subjectCode = code;
log.info("专题code ==>> {}", subjectCode);
subjectId = this.findSubjectByCode(subjectCode);
if (Objects.isNull(subjectId)) {
log.error("模板按钮点击次数统计异常,通过活动code无法获取专题, subjectCode ==>> {}", subjectCode);
continue;
}
paramValueId = Long.valueOf(split[1]);
log.info("模板属性id ==>> {}", paramValueId);
name = this.findParamValueByValueId(paramValueId);
log.info("模板属性名称 ==>> {}", name);
if (StringUtils.isBlank(name)) {
log.warn("模板按钮点击次数统计异常,无实例内容名称, paramValueId ==>> {}", paramValueId);
name = "#";
// continue;
}
} catch (Exception e) {
log.error(e.getMessage());
continue;
}
if (Objects.nonNull(endTime)) {
// 小时pv、uv值
ActTplParamClickHour activityBtnPvUvHour_ =
this.activityBtnPvUvHourService.
findBySubjectIdAndTemplateParamValueIdAndDayAndHour(
subjectId, paramValueId, LocalDate.now().toString(),LocalDateTime.now().getHour());
if (Objects.isNull(activityBtnPvUvHour_.getId())) {
// 新增
Integer hourPv = this.getHourPV(subjectCode, paramValueId);
Integer hourUv = this.getHourUV(subjectCode, paramValueId);
ActTplParamClickHour activityBtnPvUvHour = new ActTplParamClickHour();
activityBtnPvUvHour.setSubjectId(subjectId);
activityBtnPvUvHour.setSubjectCode(subjectCode);
activityBtnPvUvHour.setName(name);
activityBtnPvUvHour.setDay(LocalDate.now().toString());
activityBtnPvUvHour.setTemplateParamValueId(paramValueId);
activityBtnPvUvHour.setHour(LocalDateTime.now().getHour());
activityBtnPvUvHour.setPv(hourPv);
activityBtnPvUvHour.setUv(hourUv);
this.activityBtnPvUvHourService.create(activityBtnPvUvHour);
} else {
// 修改
Integer hourPv = this.getHourPV(subjectCode, paramValueId);
Integer hourUv = this.getHourUV(subjectCode, paramValueId);
log.info("hourPv ==>> {}", hourPv);
log.info("hourUv ==>> {}", hourUv);
if (activityBtnPvUvHour_.getPv() >= hourPv) {
hourPv = activityBtnPvUvHour_.getPv();
}
String marktingActivityCode ="";
Long marktingActivityId = 0L;
String activityCode = "";
Long activityId = 0L;
Long paramValueId = 0L;
String name = "";
if (activityBtnPvUvHour_.getUv() >= hourUv) {
hourUv = activityBtnPvUvHour_.getUv();
}
// 获取此营销活动对应的参数,格式 事件code-按钮id
Set<String> codeAndBtnIds = this.redisUtils.smembers("MS_M_ACTIVITY_CODE|"+code);
if (Objects.nonNull(codeAndBtnIds) && CollectionUtils.isNotEmpty(codeAndBtnIds)){
for (String s1 : codeAndBtnIds) {
log.info("营销活动code、活动事件code ==>> {}", s1);
String[] split = s1.split("#");
activityBtnPvUvHour_.setPv(hourPv);
activityBtnPvUvHour_.setUv(hourUv);
activityBtnPvUvHour_.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvHourService.update(activityBtnPvUvHour_);
if (split.length == 0) {
split = s1.split("-");
}
}
if (split.length == 0) {
continue;
}
log.info("分割后的结果 ==>> {}", split);
try {
marktingActivityCode = code;
log.info("营销活动code ==>> {}", marktingActivityCode);
marktingActivityId = this.findMarktingActivityByCode(marktingActivityCode);
if (Objects.isNull(marktingActivityId)) {
log.error("模板按钮点击次数统计异常,通过活动code无法获取营销活动, marktingActivityCode ==>> {}", marktingActivityCode);
continue;
}
activityCode = split[0];
log.info("活动事件code ==>> {}", activityCode);
activityId = this.findActivityByCode(activityCode);
log.info("活动事件Id ==>> {}", activityId);
if (Objects.isNull(activityId)) {
log.warn("模板按钮点击次数统计异常,通过活动事件code无法获取活动事件, activityCode ==>> {}", activityCode);
// continue;
}
paramValueId = Long.valueOf(split[1]);
log.info("模板属性id ==>> {}", paramValueId);
name = this.findParamValueByValueId(paramValueId);
log.info("模板属性名称 ==>> {}", name);
if (StringUtils.isBlank(name)) {
log.warn("模板按钮点击次数统计异常,无实例内容名称, paramValueId ==>> {}", paramValueId);
name = "#";
// continue;
}
} catch (Exception e) {
log.error(e.getMessage());
continue;
// day pv、uv值
ActTplParamClickDay pvUvDay1 = this.activityBtnPvUvDayService.
findBySubjectIdAndTemplateParamValueIdAndDay(subjectId, paramValueId, LocalDate.now().toString());
if(Objects.isNull(pvUvDay1.getId())){
ActTplParamClickDay activityBtnPvUvDay = new ActTplParamClickDay();
activityBtnPvUvDay.setSubjectCode(subjectCode);
activityBtnPvUvDay.setSubjectId(subjectId);
activityBtnPvUvDay.setDay(LocalDate.now().toString());
activityBtnPvUvDay.setTemplateParamValueId(paramValueId);
activityBtnPvUvDay.setName(name);
Integer dayPv = this.getDayPV(subjectCode, paramValueId);
Integer dayUv = this.getDayUV(subjectCode, paramValueId);
log.info("dayPv ==>> {}", dayPv);
log.info("dayUv ==>> {}", dayUv);
activityBtnPvUvDay.setPv(dayPv);
activityBtnPvUvDay.setUv(dayUv);
this.activityBtnPvUvDayService.create(activityBtnPvUvDay);
} else {
Integer dayPv = this.getDayPV(subjectCode, paramValueId);
Integer dayUv = this.getDayUV(subjectCode, paramValueId);
log.info("dayPv ==>> {}", dayPv);
log.info("dayUv ==>> {}", dayUv);
if (pvUvDay1.getPv() >= dayPv) {
dayPv = pvUvDay1.getPv();
}
log.info("活动结束时间 ==>> {}", endTime);
// 活动结束删除所有的对应的key
if (endTime.compareTo(LocalDateTime.now()) <= 0) {
log.warn("活动结束,活动结束时间两天后删除活动code对应的所有key");
if (endTime.plusDays(2).compareTo(LocalDateTime.now()) <= 0) {
Set<String> keys = this.redisUtils.keys("*|" + code+"#"+activityCode+"#"+paramValueId + "*");
if (CollectionUtils.isNotEmpty(keys)) {
for (Object key : keys) {
this.redisUtils.del(key.toString());
log.info("删除活动code对应的所有的key --->>{},成功", key);
}
} else {
keys = this.redisUtils.keys("*|" + code+"-"+activityCode+"-"+paramValueId + "*");
if (CollectionUtils.isNotEmpty(keys)) {
for (Object key : keys) {
this.redisUtils.del(key.toString());
log.info("删除活动code对应的所有的key --->>{},成功", key);
}
}
}
// 删除营销活动下所有的活动事件对应的按钮
Set<String> keys_ = this.redisUtils.keys("MS_M_ACTIVITY_CODE|" + code);
if (CollectionUtils.isNotEmpty(keys_)) {
this.redisUtils.del("MS_M_ACTIVITY_CODE|" + code);
log.info("删除活动code对应的所有的key --->>{},成功 ", "MS_M_ACTIVITY_CODE|" + code);
}
}
continue;
if (pvUvDay1.getUv() >= dayUv) {
dayUv = pvUvDay1.getUv();
}
// 小时pv、uv值
ActTplParamClickHour activityBtnPvUvHour_ =
this.activityBtnPvUvHourService.
findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDayAndHour(marktingActivityId,
activityId, paramValueId, LocalDate.now().toString(),LocalDateTime.now().getHour());
if (Objects.isNull(activityBtnPvUvHour_.getId())) {
// 新增
Integer hourPv = this.getHourPV(marktingActivityCode, activityCode, paramValueId);
Integer hourUv = this.getHourUV(marktingActivityCode, activityCode, paramValueId);
ActTplParamClickHour activityBtnPvUvHour = new ActTplParamClickHour();
activityBtnPvUvHour.setMarketingActivityId(marktingActivityId);
activityBtnPvUvHour.setActivityId(activityId);
activityBtnPvUvHour.setName(name);
activityBtnPvUvHour.setDay(LocalDate.now().toString());
activityBtnPvUvHour.setTemplateParamValueId(paramValueId);
activityBtnPvUvHour.setHour(LocalDateTime.now().getHour());
activityBtnPvUvHour.setPv(hourPv);
activityBtnPvUvHour.setUv(hourUv);
this.activityBtnPvUvHourService.create(activityBtnPvUvHour);
} else {
// 修改
Integer hourPv = this.getHourPV(marktingActivityCode, activityCode, paramValueId);
Integer hourUv = this.getHourUV(marktingActivityCode, activityCode, paramValueId);
log.info("hourPv ==>> {}", hourPv);
log.info("hourUv ==>> {}", hourUv);
if (activityBtnPvUvHour_.getPv() >= hourPv) {
hourPv = activityBtnPvUvHour_.getPv();
}
if (activityBtnPvUvHour_.getUv() >= hourUv) {
hourUv = activityBtnPvUvHour_.getUv();
}
activityBtnPvUvHour_.setPv(hourPv);
activityBtnPvUvHour_.setUv(hourUv);
activityBtnPvUvHour_.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvHourService.update(activityBtnPvUvHour_);
pvUvDay1.setPv(dayPv);
pvUvDay1.setUv(dayUv);
pvUvDay1.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvDayService.update(pvUvDay1);
}
}
// all
ActTplParamClick pvUv1 = this.activityBtnPvUvService.
findBySubjectIdAndTemplateParamValueId(subjectId, paramValueId);
if(Objects.isNull(pvUv1.getId())){
ActTplParamClick activityBtnPvUv = new ActTplParamClick();
activityBtnPvUv.setSubjectId(Long.parseLong(id));
activityBtnPvUv.setSubjectCode(subjectCode);
activityBtnPvUv.setTemplateParamValueId(paramValueId);
activityBtnPvUv.setName(name);
Integer allPV = this.getAllPV(subjectCode, paramValueId);
Integer allUv = this.getAllUV(subjectCode, paramValueId);
log.info("allPV ==>> {}", allPV);
log.info("allUv ==>> {}", allUv);
activityBtnPvUv.setPv(allPV);
activityBtnPvUv.setUv(allUv);
// day pv、uv值
ActTplParamClickDay pvUvDay1 = this.activityBtnPvUvDayService.
findByMarketingActivityIdAndActivityIdAndTemplateParamValueIdAndDay(marktingActivityId,
activityId, paramValueId, LocalDate.now().toString());
if(Objects.isNull(pvUvDay1.getId())){
ActTplParamClickDay activityBtnPvUvDay = new ActTplParamClickDay();
activityBtnPvUvDay.setMarketingActivityId(marktingActivityId);
activityBtnPvUvDay.setActivityId(activityId);
activityBtnPvUvDay.setDay(LocalDate.now().toString());
activityBtnPvUvDay.setTemplateParamValueId(paramValueId);
activityBtnPvUvDay.setName(name);
Integer dayPv = this.getDayPV(marktingActivityCode, activityCode, paramValueId);
Integer dayUv = this.getDayUV(marktingActivityCode, activityCode, paramValueId);
log.info("dayPv ==>> {}", dayPv);
log.info("dayUv ==>> {}", dayUv);
activityBtnPvUvDay.setPv(dayPv);
activityBtnPvUvDay.setUv(dayUv);
this.activityBtnPvUvDayService.create(activityBtnPvUvDay);
} else {
Integer dayPv = this.getDayPV(marktingActivityCode, activityCode, paramValueId);
Integer dayUv = this.getDayUV(marktingActivityCode, activityCode, paramValueId);
log.info("dayPv ==>> {}", dayPv);
log.info("dayUv ==>> {}", dayUv);
if (pvUvDay1.getPv() >= dayPv) {
dayPv = pvUvDay1.getPv();
}
if (pvUvDay1.getUv() >= dayUv) {
dayUv = pvUvDay1.getUv();
}
pvUvDay1.setPv(dayPv);
pvUvDay1.setUv(dayUv);
pvUvDay1.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvDayService.update(pvUvDay1);
this.activityBtnPvUvService.create(activityBtnPvUv);
} else {
Integer allPV = this.getAllPV(subjectCode, paramValueId);
Integer allUv = this.getAllUV(subjectCode, paramValueId);
log.info("allPV ==>> {}", allPV);
log.info("allUv ==>> {}", allUv);
if (pvUv1.getPv() >= allPV) {
allPV = pvUv1.getPv();
}
// all
ActTplParamClick pvUv1 = this.activityBtnPvUvService.
findByMarketingActivityIdAndActivityIdAndTemplateParamValueId(marktingActivityId,
activityId, paramValueId);
if(Objects.isNull(pvUv1.getId())){
ActTplParamClick activityBtnPvUv = new ActTplParamClick();
activityBtnPvUv.setMarketingActivityId(Long.parseLong(id));
activityBtnPvUv.setActivityId(activityId);
activityBtnPvUv.setTemplateParamValueId(paramValueId);
activityBtnPvUv.setName(name);
Integer allPV = this.getAllPV(marktingActivityCode, activityCode, paramValueId);
Integer allUv = this.getAllUV(marktingActivityCode, activityCode, paramValueId);
log.info("allPV ==>> {}", allPV);
log.info("allUv ==>> {}", allUv);
activityBtnPvUv.setPv(allPV);
activityBtnPvUv.setUv(allUv);
this.activityBtnPvUvService.create(activityBtnPvUv);
} else {
Integer allPV = this.getAllPV(marktingActivityCode, activityCode, paramValueId);
Integer allUv = this.getAllUV(marktingActivityCode, activityCode, paramValueId);
log.info("allPV ==>> {}", allPV);
log.info("allUv ==>> {}", allUv);
if (pvUv1.getPv() >= allPV) {
allPV = pvUv1.getPv();
}
if (pvUv1.getUv() >= allUv) {
allUv = pvUv1.getUv();
}
pvUv1.setPv(allPV);
pvUv1.setUv(allUv);
pvUv1.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvService.update(pvUv1);
if (pvUv1.getUv() >= allUv) {
allUv = pvUv1.getUv();
}
pvUv1.setPv(allPV);
pvUv1.setUv(allUv);
pvUv1.setUpdateTime(TimestampUtil.now());
this.activityBtnPvUvService.update(pvUv1);
}
}
}
}
......@@ -306,14 +255,13 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private Integer getAllUV(String code, String activityCode, Long btnId) {
String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId;
private Integer getAllUV(String code, Long btnId) {
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId;
log.info("getAllUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
} else {
key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId;
hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -323,14 +271,13 @@ public class ActivityBtnClickPvUcCalculateTask {
return 0;
}
private Integer getAllPV(String code, String activityCode, Long btnId) {
String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId;
private Integer getAllPV(String code, Long btnId) {
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId;
log.info("getAllPV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
} else {
key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId;
hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -340,14 +287,13 @@ public class ActivityBtnClickPvUcCalculateTask {
return 0;
}
private Integer getDayUV(String code, String activityCode, Long btnId) {
String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now();
private Integer getDayUV(String code, Long btnId) {
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getDayUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
} else {
key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now();
hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -357,14 +303,13 @@ public class ActivityBtnClickPvUcCalculateTask {
return 0;
}
private Integer getDayPV(String code, String activityCode, Long btnId) {
String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now();
private Integer getDayPV(String code, Long btnId) {
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getDayUV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
} else {
key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now();
hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -374,7 +319,7 @@ public class ActivityBtnClickPvUcCalculateTask {
return 0;
}
private Integer getHourUV(String code, String activityCode, Long btnId) {
private Integer getHourUV(String code, Long btnId) {
int hour = LocalDateTime.now().getHour();
String hourStr = "";
if (hour < 10) {
......@@ -383,13 +328,12 @@ public class ActivityBtnClickPvUcCalculateTask {
hourStr = String.valueOf(hour);
}
String key = "MS_ACTIVITY_BTN_UV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getHourUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
} else {
key = "MS_ACTIVITY_BTN_UV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -399,7 +343,7 @@ public class ActivityBtnClickPvUcCalculateTask {
return 0;
}
private Integer getHourPV(String code, String activityCode, Long btnId) {
private Integer getHourPV(String code, Long btnId) {
int hour = LocalDateTime.now().getHour();
String hourStr = "";
if (hour < 10) {
......@@ -407,13 +351,12 @@ public class ActivityBtnClickPvUcCalculateTask {
} else {
hourStr = String.valueOf(hour);
}
String key = "MS_ACTIVITY_BTN_PV|"+code+"#"+activityCode+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getHourPV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
} else {
key = "MS_ACTIVITY_BTN_PV|"+code+"-"+activityCode+"-"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -424,8 +367,6 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private String findParamValueByValueId(Long paramValueId) {
/* String sql = "SELECT pa.`name` FROM `tp_template_param` AS pa LEFT JOIN `tp_template_param_value` AS tt " +
" ON pa.id = tt.template_param_id WHERE tt.id = '"+paramValueId+"'";*/
String sql = "SELECT tt.`name` FROM `tp_template_param_value` AS tt " +
" WHERE tt.id = '"+paramValueId+"'";
List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
......@@ -435,18 +376,8 @@ public class ActivityBtnClickPvUcCalculateTask {
return null;
}
private Long findActivityByCode(String activityCode) {
String sql = "SELECT aa.`id` FROM `act_activity` AS aa WHERE `code` = '"+activityCode+"'";
List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
if (CollectionUtils.isNotEmpty(objectMap)) {
Map<String, Object> map = objectMap.get(0);
return Long.valueOf(map.get("id").toString());
}
return null;
}
private Long findMarktingActivityByCode(String marktingActivityCode) {
String sql = "SELECT am.`id` FROM `act_marketing_activity` AS am WHERE `code` = '"+marktingActivityCode+"'";
private Long findSubjectByCode(String subjectCode) {
String sql = "SELECT am.`id` FROM `x_subject` AS am WHERE `code` = '"+subjectCode+"'";
List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
if (CollectionUtils.isNotEmpty(objectMap)) {
Map<String, Object> map = objectMap.get(0);
......
......@@ -48,40 +48,18 @@ public class PvUvCalculateTask {
private PvUvHourService pvUvHourService;
public boolean calculateRedisData2Mysql(){
List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode();
List<Map<String, Object>> allSubjectCode = this.getAllSubjectCode();
if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) {
if (CollectionUtils.isNotEmpty(allSubjectCode)) {
for (Map<String, Object> map : allMarketingActivityCode) {
for (Map<String, Object> map : allSubjectCode) {
Object codeObj = map.get("code");
Object idObj = map.get("id");
if (Objects.nonNull(codeObj)&&Objects.nonNull(idObj)) {
String code = codeObj.toString();
String id = idObj.toString();
log.info("marktingActivity ===>>> code ====>>> [{}]",code);
LocalDateTime endTime = (LocalDateTime) map.get("endTime");
if (Objects.nonNull(endTime)) {
log.info("活动结束时间-->>{}",endTime);
// 活动结束删除所有的对应的key
if (endTime.compareTo(LocalDateTime.now()) <= 0) {
log.info("活动结束,活动结束时间30天后删除活动code对应的所有key");
if (endTime.plusDays(30).compareTo(LocalDateTime.now()) <= 0) {
Set<Object> keys = this.redisUtils.keys("*|"+code+"*");
if (CollectionUtils.isNotEmpty(keys)) {
for (Object key : keys) {
this.redisUtils.del(key.toString());
log.info("删除活动code对应的所有的key --->>{},成功",key);
}
}
}
continue;
}
}
log.info("subject ===>>> code ====>>> [{}]",code);
// 小时pv、uv值
PvUvHour pvUvHour1 =
......@@ -96,8 +74,8 @@ public class PvUvCalculateTask {
log.info("hourUv ==>> {}", hourUv);
PvUvHour pvUvHour = new PvUvHour();
pvUvHour.setMarketingActivityId(Long.parseLong(id));
pvUvHour.setMarketingActivityCode(code);
pvUvHour.setSubjectId(Long.parseLong(id));
pvUvHour.setSubjectCode(code);
pvUvHour.setDay(LocalDate.now().toString());
pvUvHour.setHour(LocalDateTime.now().getHour());
pvUvHour.setPv(hourPv);
......@@ -133,8 +111,8 @@ public class PvUvCalculateTask {
if(Objects.isNull(pvUvDay1.getId())){
PvUvDay pvUvDay = new PvUvDay();
pvUvDay.setMarketingActivityId(Long.parseLong(id));
pvUvDay.setMarketingActivityCode(code);
pvUvDay.setSubjectId(Long.parseLong(id));
pvUvDay.setSubjectCode(code);
pvUvDay.setDay(LocalDate.now().toString());
Integer dayPv = this.getDayPV(code);
......@@ -171,8 +149,8 @@ public class PvUvCalculateTask {
PvUv pvUv1 = this.pvUvService.findByMarketingActivityId(Long.parseLong(id));
if(Objects.isNull(pvUv1.getId())){
PvUv pvUv = new PvUv();
pvUv.setMarketingActivityId(Long.parseLong(id));
pvUv.setMarketingActivityCode(code);
pvUv.setSubjectId(Long.parseLong(id));
pvUv.setSubjectCode(code);
Integer allPV = this.getAllPV(code);
Integer allUv = this.getAllUV(code);
......@@ -222,8 +200,8 @@ public class PvUvCalculateTask {
} else {
hourStr = String.valueOf(hour);
}
log.info("getHourPV ==>> key ==>> {}", "MS_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr, "ALL");
log.info("getHourPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code +"|" + LocalDate.now()+"|"+hourStr, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
}
......@@ -232,8 +210,8 @@ public class PvUvCalculateTask {
}
private Integer getDayPV(String code){
log.info("getDayPV ==>> key ==>> {}", "MS_PV" + "|" + code + "|" + LocalDate.now());
Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code + "|" + LocalDate.now(), "ALL");
log.info("getDayPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code + "|" + LocalDate.now());
Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code + "|" + LocalDate.now(), "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
}
......@@ -242,8 +220,8 @@ public class PvUvCalculateTask {
}
private Integer getAllPV(String code){
log.info("getAllPV ==>> key ==>> {}", "MS_PV" + "|" + code);
Object hourBtnClickPV = this.redisUtils.hget("MS_PV" + "|" + code, "ALL");
log.info("getAllPV ==>> key ==>> {}", "SUBJECT_PV" + "|" + code);
Object hourBtnClickPV = this.redisUtils.hget("SUBJECT_PV" + "|" + code, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
}
......@@ -260,8 +238,8 @@ public class PvUvCalculateTask {
} else {
hourStr = String.valueOf(hour);
}
log.info("getHourUV ==>> key ==>> {}", "MS_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr, "ALL");
log.info("getHourUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code + "|" + LocalDate.now()+"|"+hourStr, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
}
......@@ -271,8 +249,8 @@ public class PvUvCalculateTask {
private Integer getDayUV(String code){
log.info("getDayBtnClickUV ==>> key ==>> {}", "MS_UV" + "|" + code + "|" + LocalDate.now());
Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code + "|" + LocalDate.now(), "ALL");
log.info("getDayBtnClickUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code + "|" + LocalDate.now());
Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code + "|" + LocalDate.now(), "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
}
......@@ -282,8 +260,8 @@ public class PvUvCalculateTask {
private Integer getAllUV(String code){
log.info("getAllUV ==>> key ==>> {}", "MS_UV" + "|" + code);
Object hourBtnClickUV = this.redisUtils.hget("MS_UV" + "|" + code, "ALL");
log.info("getAllUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code);
Object hourBtnClickUV = this.redisUtils.hget("SUBJECT_UV" + "|" + code, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
}
......@@ -291,10 +269,10 @@ public class PvUvCalculateTask {
return 0;
}
private List<Map<String,Object>> getAllMarketingActivityCode(){
private List<Map<String,Object>> getAllSubjectCode(){
String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code`, adr.`end_time` AS `endTime` FROM " +
" `act_marketing_activity` adr WHERE now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY)" +
String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code` FROM " +
" `x_subject` adr " +
" GROUP BY `code`";
return this.jdbcTemplate.queryForList(sql);
......
package com.topdraw.business.process.calculate.task;
import com.topdraw.business.module.subscribe.all.domain.SubscribePvUv;
import com.topdraw.business.module.subscribe.all.service.SubscribePvUvService;
import com.topdraw.business.module.subscribe.day.domain.SubscribePvUvDay;
import com.topdraw.business.module.subscribe.day.service.SubscribePvUvDayService;
import com.topdraw.business.module.subscribe.hour.domain.SubscribePvUvHour;
import com.topdraw.business.module.subscribe.hour.service.SubscribePvUvHourService;
import com.topdraw.util.TimestampUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import redis.clients.jedis.Jedis;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/2/26 19:40
* @version: :
* @modified By:
* @since : modified in 2022/2/26 19:40
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
@Slf4j
public class SubscribeCalculateTask {
@Autowired
private Jedis redisUtils;
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SubscribePvUvHourService subscribePvUvHourService;
@Autowired
private SubscribePvUvDayService subscribePvUvDayService;
@Autowired
private SubscribePvUvService subscribePvUvService;
private List<Map<String,Object>> getAllMarketingActivityCode(){
String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code`, adr.`end_time` AS `endTime` " +
" FROM `act_marketing_activity` adr WHERE now() BETWEEN `start_time` AND DATE_ADD(`end_time`,INTERVAL 3 DAY) GROUP BY `code`";
return this.jdbcTemplate.queryForList(sql);
}
private List<Map<String,Object>> getPackageInfo(String packageId){
String sql = "SELECT pa.`code` , pa.`name` FROM `x_package` AS pa WHERE product_id = '"+packageId+"'";
return this.jdbcTemplate.queryForList(sql);
}
private Long getHourBtnClickPV(String code, String packageId){
int hour = LocalDateTime.now().getHour();
String hourStr = "";
if (hour < 10) {
hourStr = "0"+hour;
} else {
hourStr = String.valueOf(hour);
}
log.info("getHourBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return (long) Integer.parseInt(hourBtnClickPV.toString());
}
return 0L;
}
private Long getDayBtnClickPV(String code, String packageId){
log.info("getDayBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now());
Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId + "|" + LocalDate.now(), "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return (long) Integer.parseInt(hourBtnClickPV.toString());
}
return 0L;
}
private Long getAllBtnClickPV(String code, String packageId){
log.info("getAllBtnClickPV ==>> key ==>> {}", "MS_BTN_CLICK_PV" + "|" + code + "-" + packageId);
Object hourBtnClickPV = this.redisUtils.hget("MS_BTN_CLICK_PV" + "|" + code + "-" + packageId, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return (long) Integer.parseInt(hourBtnClickPV.toString());
}
return 0L;
}
private Long getHourBtnClickUV(String code, String packageId){
int hour = LocalDateTime.now().getHour();
String hourStr = "";
if (hour < 10) {
hourStr = "0"+hour;
} else {
hourStr = String.valueOf(hour);
}
log.info("getHourBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return (long) Integer.parseInt(hourBtnClickUV.toString());
}
return 0L;
}
private Long getDayBtnClickUV(String code, String packageId){
log.info("getDayBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now());
Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId + "|" + LocalDate.now(), "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return (long) Integer.parseInt(hourBtnClickUV.toString());
}
return 0L;
}
private Long getAllBtnClickUV(String code, String packageId){
log.info("getAllBtnClickUV ==>> key ==>> {}", "MS_BTN_CLICK_UV" + "|" + code + "-" + packageId);
Object hourBtnClickUV = this.redisUtils.hget("MS_BTN_CLICK_UV" + "|" + code + "-" + packageId, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return (long) Integer.parseInt(hourBtnClickUV.toString());
}
return 0L;
}
private Long getHourSubscribeNum(String code, String packageId){
int hour = LocalDateTime.now().getHour();
String hourStr = "";
if (hour < 10) {
hourStr = "0"+hour;
} else {
hourStr = String.valueOf(hour);
}
log.info("getHourSubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr);
Object hourBtnClickPV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + LocalDate.now()+"|"+hourStr, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Long.parseLong(hourBtnClickPV.toString());
}
return 0L;
}
private Long getDaySubscribeNum(String code, String packageId, LocalDate localDate){
log.info("getDaySubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + localDate);
Object hourBtnClickUV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId + "|" + localDate, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Long.parseLong(hourBtnClickUV.toString());
}
return 0L;
}
private Long getAllSubscribeNum(String code, String packageId){
log.info("getAllSubscribeNum ==>> key ==>> {}", "MS_SUBSCRIB" + "|" + code + "-" + packageId);
Object hourBtnClickUV = this.redisUtils.hget("MS_SUBSCRIB" + "|" + code + "-" + packageId, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Long.parseLong(hourBtnClickUV.toString());
}
return 0L;
}
private Set<String> getPackageIdByCode(String code) {
String key = "MS_PRODUCTID_SET|"+code;
log.info("getPackageIdByCode ==>> key ==>> {}", key);
return this.redisUtils.smembers(key);
}
public void calculateSubscribe2Mysql() {
List<Map<String, Object>> allMarketingActivityCode = this.getAllMarketingActivityCode();
if (CollectionUtils.isNotEmpty(allMarketingActivityCode)) {
for (Map<String, Object> map : allMarketingActivityCode) {
Object codeObj = map.get("code");
Object idObj = map.get("id");
if (Objects.nonNull(codeObj)&&Objects.nonNull(idObj)) {
String id = idObj.toString();
String code = codeObj.toString();
log.info("活动code-->>{}",code);
LocalDateTime endTime = (LocalDateTime) map.get("endTime");
if (Objects.nonNull(endTime)) {
log.info("活动结束时间-->>{}",endTime);
// 活动结束删除所有的对应的key
if (endTime.compareTo(LocalDateTime.now()) <= 0) {
log.info("活动结束,活动结束时间两天后删除活动code对应的所有key");
if (endTime.plusDays(2).compareTo(LocalDateTime.now()) <= 0) {
Set<String> keys = this.redisUtils.keys("*|"+code+"*");
if (CollectionUtils.isNotEmpty(keys)) {
for (Object key : keys) {
this.redisUtils.del(key.toString());
log.info("删除活动code对应的所有的key --->>{},成功",key);
}
}
}
continue;
}
}
Set<String> packageIds = this.getPackageIdByCode(code);
log.info("subscribe ==>> packageIdList ==>> {}", packageIds);
if (CollectionUtils.isEmpty(packageIds)) {
log.info(" ==>> 产品id列表,不存在");
continue;
}
for (String packageId: packageIds) {
//String packageId = packageIdStr.toString();
log.info("subscribe ==>> packageId ==>> {}", packageId);
List<Map<String, Object>> packageInfo = this.getPackageInfo(packageId);
log.info("subscribe ==>> packageInfo ==>> {}", packageInfo);
String packageCode = "";
String packageName = "";
if (CollectionUtils.isNotEmpty(packageInfo)) {
Map<String, Object> packageInfoMap1 = packageInfo.get(0);
if (MapUtils.isNotEmpty(packageInfoMap1)) {
if (Objects.nonNull(packageInfoMap1.get("code"))) {
packageCode = packageInfoMap1.get("code").toString();
}
if (Objects.nonNull(packageInfoMap1.get("name"))) {
packageName = packageInfoMap1.get("name").toString();
}
}
}
// 小时订购转换值
SubscribePvUvHour subscribePvUvHour =
this.subscribePvUvHourService.
findByMarketingActivityCodeAndPackageIdAndDayAndHour(code, packageId,
LocalDate.now().toString(), LocalDateTime.now().getHour());
log.info("subscribe ==>> subscribePvUvHour ==>> {}", subscribePvUvHour);
if (Objects.isNull(subscribePvUvHour.getId())) {
log.info("subscribe ==>> subscribePvUvHour ==>> create");
SubscribePvUvHour pvUvHour = new SubscribePvUvHour();
pvUvHour.setMarketingActivityId(Long.parseLong(id));
pvUvHour.setMarketingActivityCode(code);
pvUvHour.setDay(LocalDate.now().toString());
pvUvHour.setHour(LocalDateTime.now().getHour());
pvUvHour.setPackageId(packageId);
pvUvHour.setPackageCode(packageCode);
pvUvHour.setPackageName(packageName);
Long hourSubscribeNum = this.getHourSubscribeNum(code, packageId);
log.info("subscribe ==>> hourSubscribeNum ==>> {}", hourSubscribeNum);
pvUvHour.setSubscribeNum(hourSubscribeNum);
Long hourBtnClickPV = this.getHourBtnClickPV(code, packageId);
log.info("subscribe ==>> hourBtnClickPV ==>> {}", hourBtnClickPV);
pvUvHour.setBtnClickPv(hourBtnClickPV);
Long hourBtnClickUV = this.getHourBtnClickUV(code, packageId);
log.info("subscribe ==>> hourBtnClickUV ==>> {}", hourBtnClickUV);
pvUvHour.setBtnClickUv(hourBtnClickUV);
this.subscribePvUvHourService.create(pvUvHour);
} else {
log.info("subscribe ==>> subscribePvUvHour ==>> update");
Long hourSubscribeNum = this.getHourSubscribeNum(code, packageId);
log.info("subscribe ==>> hourSubscribeNum ==>> {}", hourSubscribeNum);
Long hourBtnClickPV = this.getHourBtnClickPV(code, packageId);
log.info("subscribe ==>> hourBtnClickPV ==>> {}", hourBtnClickPV);
Long hourBtnClickUV = this.getHourBtnClickUV(code, packageId);
log.info("subscribe ==>> hourBtnClickUV ==>> {}", hourBtnClickUV);
if (subscribePvUvHour.getBtnClickPv() >= hourBtnClickPV) {
hourBtnClickPV = subscribePvUvHour.getBtnClickPv();
}
if (subscribePvUvHour.getBtnClickUv() >= hourBtnClickUV) {
hourBtnClickUV = subscribePvUvHour.getBtnClickUv();
}
subscribePvUvHour.setBtnClickUv(hourBtnClickUV);
subscribePvUvHour.setBtnClickPv(hourBtnClickPV);
subscribePvUvHour.setSubscribeNum(hourSubscribeNum);
subscribePvUvHour.setUpdateTime(TimestampUtil.now());
log.info("subscribe ==>> subscribePvUvHour ==>> {}", subscribePvUvHour);
this.subscribePvUvHourService.update(subscribePvUvHour);
}
// 天订购转换值
SubscribePvUvDay subscribePvUvDay =
this.subscribePvUvDayService.
findByMarketingActivityCodeAndPackageIdAndDay(code, packageId,
LocalDate.now().toString());
log.info("subscribe ==>> subscribePvUvDay ==>> {}", subscribePvUvDay);
if (Objects.isNull(subscribePvUvDay.getId())) {
log.info("subscribe ==>> subscribePvUvDay ==>> create");
SubscribePvUvDay subscribePvUvDay_ = new SubscribePvUvDay();
subscribePvUvDay_.setMarketingActivityId(Long.parseLong(id));
subscribePvUvDay_.setMarketingActivityCode(code);
subscribePvUvDay_.setDay(LocalDate.now().toString());
subscribePvUvDay_.setPackageId(packageId);
subscribePvUvDay_.setPackageCode(packageCode);
subscribePvUvDay_.setPackageName(packageName);
Long daySubscribeNum = this.getDaySubscribeNum(code, packageId, LocalDate.now());
log.info("subscribe ==>> daySubscribeNum ==>> {}", daySubscribeNum);
subscribePvUvDay_.setSubscribeNum(daySubscribeNum);
Long dayBtnClickPV = this.getDayBtnClickPV(code, packageId);
log.info("subscribe ==>> dayBtnClickPV ==>> {}", dayBtnClickPV);
subscribePvUvDay_.setBtnClickPv(dayBtnClickPV);
Long dayBtnClickUV = this.getDayBtnClickUV(code, packageId);
log.info("subscribe ==>> dayBtnClickUV ==>> {}", dayBtnClickUV);
subscribePvUvDay_.setBtnClickUv(dayBtnClickUV);
log.info("subscribe ==>> subscribePvUvDay_ ==>> {}", subscribePvUvDay_);
this.subscribePvUvDayService.create(subscribePvUvDay_);
} else {
log.info("subscribe ==>> subscribePvUvDay ==>> update");
Long daySubscribeNum = this.getDaySubscribeNum(code, packageId, LocalDate.now());
log.info("subscribe ==>> daySubscribeNum ==>> {}", daySubscribeNum);
Long dayBtnClickPV = this.getDayBtnClickPV(code, packageId);
log.info("subscribe ==>> dayBtnClickPV ==>> {}", dayBtnClickPV);
Long dayBtnClickUV = this.getDayBtnClickUV(code, packageId);
log.info("subscribe ==>> dayBtnClickUV ==>> {}", dayBtnClickUV);
if (subscribePvUvDay.getBtnClickPv() >= dayBtnClickPV) {
dayBtnClickPV = subscribePvUvDay.getBtnClickPv();
}
if (subscribePvUvDay.getBtnClickUv() >= dayBtnClickUV) {
dayBtnClickUV = subscribePvUvDay.getBtnClickUv();
}
subscribePvUvDay.setSubscribeNum(daySubscribeNum);
subscribePvUvDay.setBtnClickUv(dayBtnClickUV);
subscribePvUvDay.setBtnClickPv(dayBtnClickPV);
subscribePvUvDay.setUpdateTime(TimestampUtil.now());
log.info("subscribe ==>> subscribePvUvDay ==>> {}", subscribePvUvDay);
this.subscribePvUvDayService.update(subscribePvUvDay);
}
// 总订购转换值
SubscribePvUv subscribePvUv =
this.subscribePvUvService.
findByMarketingActivityCodeAndPackageId(code, packageId);
log.info("subscribe ==>> subscribePvUv ==>> {}", subscribePvUv);
if (Objects.isNull(subscribePvUv.getId())) {
log.info("subscribe ==>> subscribePvUv ==>> create");
SubscribePvUv subscribePvUv_ = new SubscribePvUv();
subscribePvUv_.setMarketingActivityId(Long.parseLong(id));
subscribePvUv_.setMarketingActivityCode(code);
subscribePvUv_.setPackageId(packageId);
subscribePvUv_.setPackageCode(packageCode);
subscribePvUv_.setPackageName(packageName);
Long allSubscribeNum = this.getAllSubscribeNum(code, packageId);
log.info("subscribe ==>> allSubscribeNum ==>> {}",allSubscribeNum);
subscribePvUv_.setSubscribeNum(allSubscribeNum);
Long allBtnClickPV = this.getAllBtnClickPV(code, packageId);
log.info("subscribe ==>> allBtnClickPV ==>> {}",allBtnClickPV);
subscribePvUv_.setBtnClickPv(allBtnClickPV);
Long allBtnClickUV = this.getAllBtnClickUV(code, packageId);
log.info("subscribe ==>> allBtnClickUV ==>> {}",allBtnClickUV);
subscribePvUv_.setBtnClickUv(allBtnClickUV);
log.info("subscribe ==>> subscribePvUv_ ==>> {}",subscribePvUv_);
this.subscribePvUvService.create(subscribePvUv_);
} else {
log.info("subscribe ==>> subscribePvUv ==>> update");
Long allSubscribeNum = this.getAllSubscribeNum(code, packageId);
log.info("subscribe ==>> allSubscribeNum ==>> {}", allSubscribeNum);
Long allBtnClickPV = this.getAllBtnClickPV(code, packageId);
log.info("subscribe ==>> allBtnClickPV ==>> {}", allBtnClickPV);
Long allBtnClickUV = this.getAllBtnClickUV(code, packageId);
log.info("subscribe ==>> allBtnClickUV ==>> {}", allBtnClickUV);
if (subscribePvUv.getBtnClickPv() >= allBtnClickPV) {
allBtnClickPV = subscribePvUv.getBtnClickPv();
}
if (subscribePvUv.getBtnClickUv() >= allBtnClickUV) {
allBtnClickUV = subscribePvUv.getBtnClickUv();
}
subscribePvUv.setBtnClickUv(allBtnClickUV);
subscribePvUv.setSubscribeNum(allSubscribeNum);
subscribePvUv.setBtnClickPv(allBtnClickPV);
subscribePvUv.setUpdateTime(TimestampUtil.now());
log.info("subscribe ==>> subscribePvUv ==>> {}", subscribePvUv);
this.subscribePvUvService.update(subscribePvUv);
}
}
}
}
}
}
}
......@@ -35,11 +35,11 @@ public class TransferActivityBtnClickPvUvScheduleTask {
}
/**
* 统计订购转换数据
* 统计按钮点击数据
*/
@Scheduled(cron = "#{transferActivityBtnClickPvUvScheduleTask.cron()}")
public void calculateSubscribe2Mysql(){
log.info("活动按钮点击次数统计 ===>>> 开始 !!!" + LocalDateTime.now());
log.info("专题按钮点击次数统计 ===>>> 开始 !!!" + LocalDateTime.now());
this.activityBtnClickPvUcCalculateTask.calculateRedisData2Mysql();
}
......
......@@ -39,7 +39,7 @@ public class TransferScheduleTask {
*/
@Scheduled(cron = "#{transferScheduleTask.cron()}")
public void calculatePvUv2Mysql(){
log.info("pv、uv统计 ===>>> 开始 !!!" + LocalDateTime.now());
log.info("专题pv、uv统计 ===>>> 开始 !!!" + LocalDateTime.now());
this.pvUvCalculateTask.calculateRedisData2Mysql();
}
......
package com.topdraw.schedule;
import com.topdraw.business.process.calculate.task.SubscribeCalculateTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/2/26 19:44
* @version: :
* @modified By:
* @since : modified in 2022/2/26 19:44
*/
@Component
@Slf4j
@EnableScheduling
public class TransferSubscribeScheduleTask {
@Autowired
private SubscribeCalculateTask subscribeCalculateTask;
@Value("${cronSubscribe:50 0/5 * * * ?}")
// @Value("0/5 * * * * ?")
private String cron;
public String cron(){
return cron;
}
/**
* 统计订购转换数据
*/
@Scheduled(cron = "#{transferSubscribeScheduleTask.cron()}")
// @Scheduled(cron = "0/5 * * * * ?")
public void calculateSubscribe2Mysql(){
log.info("订购数据统计 ===>>> 开始 !!!" + LocalDateTime.now());
this.subscribeCalculateTask.calculateSubscribe2Mysql();
}
}