Commit c230ae90 c230ae90d2218cb685ac47bc42d4fa124ffb2027 by 张云鹏

专题数据统计

1 parent 0fe13b58
......@@ -16,13 +16,5 @@ import java.util.Optional;
*/
public interface PvUvRepository extends JpaRepository<PvUv, Long>, JpaSpecificationExecutor<PvUv> {
@Modifying
@Transactional
@Query(value = "update act_pv_uv set pv = :#{#resources.pv} , uv = :#{#resources.uv} , " +
"update_time = :#{#resources.updateTime} where marketing_activity_code = :#{#resources.marketingActivityCode} " , nativeQuery = true)
void updateByMarketingActivityId(@Param("resources") PvUv resources);
Optional<PvUv> findByMarketingActivityCode(String marketingActivityCode);
Optional<PvUv> findByMarketingActivityId(Long mActivityId);
Optional<PvUv> findBySubjectId(Long mActivityId);
}
......
......@@ -41,14 +41,11 @@ public interface PvUvService {
void create(PvUv resources);
@Transactional(rollbackFor = Exception.class)
void updateByMarketingActivityId(PvUv resources);
void update(PvUv resources);
void delete(Long id);
PvUv findByMarketingActivityCode(String code);
// PvUv findByMarketingActivityCode(String code);
PvUv findByMarketingActivityId(Long parseLong);
}
......
......@@ -65,11 +65,11 @@ public class PvUvServiceImpl implements PvUvService {
PvUvRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateByMarketingActivityId(PvUv resources) {
PvUvRepository.updateByMarketingActivityId(resources);
}
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void updateByMarketingActivityId(PvUv resources) {
// PvUvRepository.updateByMarketingActivityId(resources);
// }
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -89,15 +89,15 @@ public class PvUvServiceImpl implements PvUvService {
PvUvRepository.delete(PvUv);
}
@Override
public PvUv findByMarketingActivityCode(String code) {
PvUv PvUv = PvUvRepository.findByMarketingActivityCode(code).orElseGet(PvUv::new);
return PvUv;
}
// @Override
// public PvUv findByMarketingActivityCode(String code) {
// PvUv PvUv = PvUvRepository.findByMarketingActivityCode(code).orElseGet(PvUv::new);
// return PvUv;
// }
@Override
public PvUv findByMarketingActivityId(Long mActivityId) {
return PvUvRepository.findByMarketingActivityId(mActivityId).orElseGet(PvUv::new);
return PvUvRepository.findBySubjectId(mActivityId).orElseGet(PvUv::new);
}
......
......@@ -16,14 +16,14 @@ import java.util.Optional;
*/
public interface PvUvDayRepository extends JpaRepository<PvUvDay, Long>, JpaSpecificationExecutor<PvUvDay> {
Optional<PvUvDay> findByMarketingActivityCodeAndDay(String marketingActivityCode, String day);
Optional<PvUvDay> findBySubjectCodeAndDay(String marketingActivityCode, String day);
@Modifying
@Transactional
@Query(value = "update act_pv_uv_day set pv = :#{#resources.pv} , uv = :#{#resources.uv} , " +
" update_time = :#{#resources.updateTime} where marketing_activity_code = :#{#resources.marketingActivityCode} and " +
@Query(value = "update sub_pv_uv_day set pv = :#{#resources.pv} , uv = :#{#resources.uv} , " +
" update_time = :#{#resources.updateTime} where subject_code = :#{#resources.subjectCode} and " +
" `day` = :#{#resources.day}" , nativeQuery = true)
void updateByMarketingActivityCodeAndDay(@Param("resources") PvUvDay pvUvDay);
void updateBySubjectCodeAndDay(@Param("resources") PvUvDay pvUvDay);
Optional<PvUvDay> findByMarketingActivityIdAndDay(Long mActivityId, String day);
Optional<PvUvDay> findBySubjectIdAndDay(Long mActivityId, String day);
}
......
......@@ -85,18 +85,18 @@ public class PvUvDayServiceImpl implements PvUvDayService {
@Override
public PvUvDay findByMarketingActivityCodeAndDay(String code, String day) {
PvUvDay PvUvDay = PvUvDayRepository.findByMarketingActivityCodeAndDay(code,day).orElseGet(PvUvDay::new);
PvUvDay PvUvDay = PvUvDayRepository.findBySubjectCodeAndDay(code,day).orElseGet(PvUvDay::new);
return PvUvDay;
}
@Override
public void updateByMarketingActivityCodeAndDay(PvUvDay pvUvDay) {
PvUvDayRepository.updateByMarketingActivityCodeAndDay(pvUvDay);
PvUvDayRepository.updateBySubjectCodeAndDay(pvUvDay);
}
@Override
public PvUvDay findByMarketingActivityIdAndDay(Long mActivityId, String day) {
return PvUvDayRepository.findByMarketingActivityIdAndDay(mActivityId, day).orElseGet(PvUvDay::new);
return PvUvDayRepository.findBySubjectIdAndDay(mActivityId, day).orElseGet(PvUvDay::new);
}
......
......@@ -16,18 +16,18 @@ import java.util.Optional;
*/
public interface PvUvHourRepository extends JpaRepository<PvUvHour, Long>, JpaSpecificationExecutor<PvUvHour> {
Optional<PvUvHour> findByMarketingActivityCodeAndDayAndHour(String code, String day, int hour);
Optional<PvUvHour> findBySubjectCodeAndDayAndHour(String code, String day, int hour);
Optional<PvUvHour> findByMarketingActivityIdAndDayAndHour(Long id, String day, int hour);
Optional<PvUvHour> findBySubjectIdAndDayAndHour(Long id, String day, int hour);
@Modifying
@Transactional
@Query(value = "update act_pv_uv_hour set pv = :#{#resources.pv} , uv = :#{#resources.uv} , " +
"update_time = :#{#resources.updateTime} where marketing_activity_code = :#{#resources.marketingActivityCode} and " +
@Query(value = "update sub_pv_uv_hour set pv = :#{#resources.pv} , uv = :#{#resources.uv} , " +
"update_time = :#{#resources.updateTime} where subject_code = :#{#resources.subjectCode} and " +
" `day` = :#{#resources.day} and `hour` = :#{#resources.hour}" , nativeQuery = true)
void updateByMarketingActivityCodeAndDayAndHour(@Param("resources") PvUvHour pvUvHour);
void updateBySubjectCodeAndDayAndHour(@Param("resources") PvUvHour pvUvHour);
@Query(value = "select SUM(pv) pv ,SUM(uv) pv from (\n" +
"select pv,uv from act_pv_uv_hour where `marketing_activity_code` = ?1 and `day` = ?2 and `hour` = ?3) t " , nativeQuery = true)
"select pv,uv from sub_pv_uv_hour where `subject_code` = ?1 and `day` = ?2 and `hour` = ?3) t " , nativeQuery = true)
Integer calculatePvDay(@Param("code") String code, @Param("day") String day, @Param("hour") int hour);
}
......
......@@ -74,13 +74,13 @@ public class PvUvHourServiceImpl implements PvUvHourService {
@Override
public PvUvHour findByMarketingActivityCodeAndDayAndHour(String code, String day, int hour) {
PvUvHour PvUvHour = PvUvHourRepository.findByMarketingActivityCodeAndDayAndHour(code,day,hour).orElseGet(PvUvHour::new);
PvUvHour PvUvHour = PvUvHourRepository.findBySubjectCodeAndDayAndHour(code,day,hour).orElseGet(PvUvHour::new);
return PvUvHour;
}
@Override
public void updateByMarketingActivityCodeAndDayAndHour(PvUvHour pvUvHour) {
PvUvHourRepository.updateByMarketingActivityCodeAndDayAndHour(pvUvHour);
PvUvHourRepository.updateBySubjectCodeAndDayAndHour(pvUvHour);
}
@Override
......@@ -91,7 +91,7 @@ public class PvUvHourServiceImpl implements PvUvHourService {
@Override
public PvUvHour findByMarketingActivityIdAndDayAndHour(Long mActivityId, String day, int hour) {
return PvUvHourRepository.findByMarketingActivityIdAndDayAndHour(mActivityId, day, hour).orElseGet(PvUvHour::new);
return PvUvHourRepository.findBySubjectIdAndDayAndHour(mActivityId, day, hour).orElseGet(PvUvHour::new);
}
......
......@@ -52,7 +52,7 @@ public class ActivityBtnClickPvUcCalculateTask {
private List<Map<String,Object>> getAllSubjectCode(){
String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` FROM `x_subject` tadr " +
String sql = "SELECT tadr.`id` AS `id`,tadr.`code` AS `code` FROM `cms_subject` tadr " +
" GROUP BY `code`";
return this.jdbcTemplate.queryForList(sql);
}
......@@ -84,25 +84,28 @@ public class ActivityBtnClickPvUcCalculateTask {
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("-");
}
if (split.length == 0) {
continue;
}
log.info("分割后的结果 ==>> {}", split);
// String[] split = s1.split("#");
//
// if (split.length == 0) {
// split = s1.split("-");
// }
//
// if (split.length == 0) {
// continue;
// }
// log.info("分割后的结果 ==>> {}", split);
try {
subjectCode = code;
log.info("专题code ==>> {}", subjectCode);
subjectId = this.findSubjectByCode(subjectCode);
if (Objects.isNull(subjectId)) {
log.info("专题subjectId ==>> {}", subjectId);
if (subjectId == null) {
log.info("subjectId is null");
log.error("模板按钮点击次数统计异常,通过活动code无法获取专题, subjectCode ==>> {}", subjectCode);
continue;
}
paramValueId = Long.valueOf(split[1]);
log.info("subjectId is not null");
paramValueId = Long.valueOf(s1);
log.info("模板属性id ==>> {}", paramValueId);
name = this.findParamValueByValueId(paramValueId);
log.info("模板属性名称 ==>> {}", name);
......@@ -111,7 +114,8 @@ public class ActivityBtnClickPvUcCalculateTask {
name = "#";
// continue;
}
} catch (Exception e) {
}
catch (Exception e) {
log.error(e.getMessage());
continue;
}
......@@ -138,7 +142,8 @@ public class ActivityBtnClickPvUcCalculateTask {
activityBtnPvUvHour.setUv(hourUv);
this.activityBtnPvUvHourService.create(activityBtnPvUvHour);
} else {
}
else {
// 修改
Integer hourPv = this.getHourPV(subjectCode, paramValueId);
......@@ -181,7 +186,8 @@ public class ActivityBtnClickPvUcCalculateTask {
activityBtnPvUvDay.setUv(dayUv);
this.activityBtnPvUvDayService.create(activityBtnPvUvDay);
} else {
}
else {
Integer dayPv = this.getDayPV(subjectCode, paramValueId);
Integer dayUv = this.getDayUV(subjectCode, paramValueId);
......@@ -222,7 +228,8 @@ public class ActivityBtnClickPvUcCalculateTask {
this.activityBtnPvUvService.create(activityBtnPvUv);
} else {
}
else {
Integer allPV = this.getAllPV(subjectCode, paramValueId);
Integer allUv = this.getAllUV(subjectCode, paramValueId);
......@@ -256,8 +263,8 @@ public class ActivityBtnClickPvUcCalculateTask {
private Integer getAllUV(String code, Long btnId) {
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId;
log.info("getAllUV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_UV|"+code+"#"+btnId;
log.info("getBtnClickAllUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -272,8 +279,8 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private Integer getAllPV(String code, Long btnId) {
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId;
log.info("getAllPV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_PV|"+code+"#"+btnId;
log.info("getBtnClickAllPV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -288,8 +295,8 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private Integer getDayUV(String code, Long btnId) {
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getDayUV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_UV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getBtnClickDayUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -304,8 +311,8 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private Integer getDayPV(String code, Long btnId) {
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getDayUV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_PV|"+code+"#"+btnId+ "|" + LocalDate.now();
log.info("getBtnClickDayUV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -328,8 +335,8 @@ public class ActivityBtnClickPvUcCalculateTask {
hourStr = String.valueOf(hour);
}
String key = "SUBJECT_BTN_UV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getHourUV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_UV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getBtnClickHourUV ==>> key ==>> {}", key);
Object hourBtnClickUV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickUV)) {
return Integer.valueOf(hourBtnClickUV.toString());
......@@ -351,8 +358,8 @@ public class ActivityBtnClickPvUcCalculateTask {
} else {
hourStr = String.valueOf(hour);
}
String key = "SUBJECT_BTN_PV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getHourPV ==>> key ==>> {}", key);
String key = "SUBJECT_BTN_CLICK_PV|"+code+"#"+btnId+ "|" + LocalDate.now()+"|"+hourStr;
log.info("getBtnClickHourPV ==>> key ==>> {}", key);
Object hourBtnClickPV = this.redisUtils.hget(key, "ALL");
if (Objects.nonNull(hourBtnClickPV)) {
return Integer.valueOf(hourBtnClickPV.toString());
......@@ -377,8 +384,9 @@ public class ActivityBtnClickPvUcCalculateTask {
}
private Long findSubjectByCode(String subjectCode) {
String sql = "SELECT am.`id` FROM `x_subject` AS am WHERE `code` = '"+subjectCode+"'";
String sql = "SELECT am.`id` FROM `cms_subject` AS am WHERE `code` = '"+subjectCode+"'";
List<Map<String, Object>> objectMap = this.jdbcTemplate.queryForList(sql);
log.info("findSubjectByCode result: {}", objectMap);
if (CollectionUtils.isNotEmpty(objectMap)) {
Map<String, Object> map = objectMap.get(0);
return Long.valueOf(map.get("id").toString());
......
......@@ -249,7 +249,7 @@ public class PvUvCalculateTask {
private Integer getDayUV(String code){
log.info("getDayBtnClickUV ==>> key ==>> {}", "SUBJECT_UV" + "|" + code + "|" + LocalDate.now());
log.info("getDayUV ==>> 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());
......@@ -272,7 +272,7 @@ public class PvUvCalculateTask {
private List<Map<String,Object>> getAllSubjectCode(){
String sql = "SELECT adr.`id` AS `id`, adr.`code` AS `code` FROM " +
" `x_subject` adr " +
" `cms_subject` adr " +
" GROUP BY `code`";
return this.jdbcTemplate.queryForList(sql);
......
package com.topdraw.redis.config;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
......@@ -13,7 +14,6 @@ import org.springframework.data.redis.connection.*;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
......@@ -37,25 +37,16 @@ import java.util.Set;
public class MyJedisConfig {
/***生产环境要打开此配置*/
@Value("${spring.redis.sentinel.master}")
@Value("${spring.redis.sentinel.master:''}")
private String master;
@Value("${spring.redis.sentinel.nodes}")
@Value("${spring.redis.sentinel.nodes:''}")
private String sentinelHost;
@Bean
public Jedis jedisPool(JedisPoolConfig jedisPoolConfig) {
String[] split = sentinelHost.split(",");
Set<String> sentinels = new HashSet<>();
for (int i = 0; i < split.length; i++) {
String s = split[i];
sentinels.add(s);
}
JedisSentinelPool jedisPool = new JedisSentinelPool(master, sentinels, jedisPoolConfig);
Jedis jedis = jedisPool.getResource();
return jedis;
}
@Value(("${spring.redis.host:''}"))
private String host;
@Value(("${spring.redis.port:''}"))
private String port;
@Value(("${spring.redis.timeout:''}"))
private String timeout;
@Bean
public JedisPoolConfig jedisPoolConfig() {
......@@ -65,20 +56,43 @@ public class MyJedisConfig {
jedisPoolConfig.setMinIdle(5);
jedisPoolConfig.setMaxWaitMillis(10000);
jedisPoolConfig.setTestOnBorrow(true);
return jedisPoolConfig;
}
/*@Bean
public Jedis jedisPool(@Value("${spring.redis.host}") String host,
@Value("${spring.redis.port}") int port,
@Value("${spring.redis.timeout}") int timeout,
// @Value("${spring.redis.password}") String password,
JedisPoolConfig jedisPoolConfig) {
@Bean
public Jedis jedisPool(JedisPoolConfig jedisPoolConfig) {
log.info("spring.redis.sentinel.nodes: {}", sentinelHost);
if (StringUtils.isNotEmpty(sentinelHost) && !"''".equals(sentinelHost)) {
log.info("哨兵模式");
String[] split = sentinelHost.split(",");
Set<String> sentinels = new HashSet<>();
for (int i = 0; i < split.length; i++) {
String s = split[i];
sentinels.add(s);
}
JedisSentinelPool jedisPool = new JedisSentinelPool(master, sentinels, jedisPoolConfig);
Jedis jedis = jedisPool.getResource();
return jedis;
}else {
log.info("单台Redis, host: {}, port: {}, timeout: {}", host, port, timeout);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, Integer.parseInt(port), Integer.parseInt(timeout));
return jedisPool.getResource();
}
}
// JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout,"redis123");
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
// @Bean
// public Jedis jedisPool(@Value("${spring.redis.host}") String host,
// @Value("${spring.redis.port}") int port,
// @Value("${spring.redis.timeout}") int timeout,
//// @Value("${spring.redis.password}") String password,
// JedisPoolConfig jedisPoolConfig) {
//
//// JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout,"redis123");
// JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
//
// return jedisPool.getResource();
// }
return jedisPool.getResource();
}*/
}
......