bug--修复jpa移除后启动统计报错

This commit is contained in:
taochengbo
2020-05-20 21:35:29 +08:00
parent dff4822b13
commit b0c4f715c6
6 changed files with 72 additions and 79 deletions

View File

@ -1,7 +1,6 @@
package co.yixiang.modules.monitor.config; package co.yixiang.modules.monitor.config;
import co.yixiang.modules.monitor.service.VisitsService; import co.yixiang.modules.monitor.service.VisitsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -13,8 +12,11 @@ import org.springframework.stereotype.Component;
@Component @Component
public class VisitsInitialization implements ApplicationRunner { public class VisitsInitialization implements ApplicationRunner {
@Autowired private final VisitsService visitsService;
private VisitsService visitsService;
public VisitsInitialization(VisitsService visitsService) {
this.visitsService = visitsService;
}
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args) throws Exception {
@ -22,4 +24,4 @@ public class VisitsInitialization implements ApplicationRunner {
visitsService.save(); visitsService.save();
System.out.println("--------------- 初始化站点统计完成 ---------------"); System.out.println("--------------- 初始化站点统计完成 ---------------");
} }
} }

View File

@ -1,7 +1,12 @@
package co.yixiang.modules.monitor.domain; package co.yixiang.modules.monitor.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
/** /**
@ -10,27 +15,21 @@ import java.sql.Timestamp;
* @author Zheng Jie * @author Zheng Jie
* @date 2018-12-13 * @date 2018-12-13
*/ */
@Entity
@Data @Data
@Table(name = "visits") @TableName( "visits")
public class Visits { public class Visits implements Serializable {
@Id @TableId
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@Column(unique = true)
private String date; private String date;
@Column(name = "pv_counts")
private Long pvCounts; private Long pvCounts;
@Column(name = "ip_counts")
private Long ipCounts; private Long ipCounts;
@Column(name = "create_time") @TableField(fill = FieldFill.INSERT)
private Timestamp createTime; private Timestamp createTime;
@Column(name = "week_day")
private String weekDay; private String weekDay;
} }

View File

@ -1,33 +0,0 @@
package co.yixiang.modules.monitor.repository;
import co.yixiang.modules.monitor.domain.Visits;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author Zheng Jie
* @date 2018-12-13
*/
@Repository
public interface VisitsRepository extends JpaRepository<Visits,Long> {
/**
* findByDate
* @param date
* @return
*/
Visits findByDate(String date);
/**
* 获得一个时间段的记录
* @param date1
* @param date2
* @return
*/
@Query(value = "select * FROM visits where " +
"create_time between ?1 and ?2",nativeQuery = true)
List<Visits> findAllVisits(String date1, String date2);
}

View File

@ -8,12 +8,14 @@
*/ */
package co.yixiang.modules.monitor.service; package co.yixiang.modules.monitor.service;
import co.yixiang.common.service.BaseService;
import co.yixiang.modules.monitor.domain.Visits;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
public interface VisitsService { public interface VisitsService extends BaseService<Visits> {
/** /**
* 提供给定时任务每天0点执行 * 提供给定时任务每天0点执行

View File

@ -1,20 +1,13 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖、分享、上传到码云、github等开源平台
* 一经发现盗用、分享等行为,将追究法律责任,后果自负
*/
package co.yixiang.modules.monitor.service.impl; package co.yixiang.modules.monitor.service.impl;
import co.yixiang.modules.monitor.domain.Visits; import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.modules.monitor.repository.VisitsRepository;
import co.yixiang.modules.monitor.service.VisitsService;
import co.yixiang.logging.service.mapper.LogMapper; import co.yixiang.logging.service.mapper.LogMapper;
import lombok.AllArgsConstructor; import co.yixiang.modules.monitor.domain.Visits;
import lombok.extern.slf4j.Slf4j; import co.yixiang.modules.monitor.service.VisitsService;
import co.yixiang.modules.monitor.service.mapper.VisitsMapper;
import co.yixiang.utils.StringUtils; import co.yixiang.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -24,47 +17,60 @@ import java.time.LocalDate;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/**
* @author hupeng
* @date 2020-05-20
*/
@Slf4j @Slf4j
@Service @Service
@AllArgsConstructor
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisitsServiceImpl implements VisitsService { public class VisitsServiceImpl extends BaseServiceImpl<VisitsMapper, Visits> implements VisitsService {
private final VisitsRepository visitsRepository;
private final LogMapper logMapper; private final LogMapper logMapper;
private final VisitsMapper visitsMapper;
public VisitsServiceImpl(LogMapper logMapper, VisitsMapper visitsMapper) {
this.logMapper = logMapper;
this.visitsMapper = visitsMapper;
}
@Override @Override
public void save() { public void save() {
LocalDate localDate = LocalDate.now(); LocalDate localDate = LocalDate.now();
Visits visits = visitsRepository.findByDate(localDate.toString()); Visits visits = this.getOne(new QueryWrapper<Visits>().lambda()
.eq(Visits::getDate,localDate.toString()));
if(visits == null){ if(visits == null){
visits = new Visits(); visits = new Visits();
visits.setWeekDay(StringUtils.getWeekDay()); visits.setWeekDay(StringUtils.getWeekDay());
visits.setPvCounts(1L); visits.setPvCounts(1L);
visits.setIpCounts(1L); visits.setIpCounts(1L);
visits.setDate(localDate.toString()); visits.setDate(localDate.toString());
visitsRepository.save(visits); this.save(visits);
} }
} }
@Override @Override
public void count(HttpServletRequest request) { public void count(HttpServletRequest request) {
LocalDate localDate = LocalDate.now(); LocalDate localDate = LocalDate.now();
Visits visits = visitsRepository.findByDate(localDate.toString()); Visits visits = this.getOne(new QueryWrapper<Visits>().lambda()
.eq(Visits::getDate,localDate.toString()));
visits.setPvCounts(visits.getPvCounts()+1); visits.setPvCounts(visits.getPvCounts()+1);
long ipCounts = logMapper.findIp(localDate.toString(), localDate.plusDays(1).toString()); long ipCounts = logMapper.findIp(localDate.toString(), localDate.plusDays(1).toString());
visits.setIpCounts(ipCounts); visits.setIpCounts(ipCounts);
visitsRepository.save(visits); this.saveOrUpdate(visits);
} }
@Override @Override
public Object get() { public Object get() {
Map map = new HashMap(); Map<String,Object> map = new HashMap<>(4);
LocalDate localDate = LocalDate.now(); LocalDate localDate = LocalDate.now();
Visits visits = visitsRepository.findByDate(localDate.toString()); Visits visits = this.getOne(new QueryWrapper<Visits>().lambda()
List<Visits> list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); .eq(Visits::getDate,localDate.toString()));
List<Visits> list = visitsMapper.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString());
long recentVisits = 0, recentIp = 0; long recentVisits = 0, recentIp = 0;
for (Visits data : list) { for (Visits data : list) {
@ -80,12 +86,12 @@ public class VisitsServiceImpl implements VisitsService {
@Override @Override
public Object getChartData() { public Object getChartData() {
Map map = new HashMap(); Map<String,Object> map = new HashMap<>(3);
LocalDate localDate = LocalDate.now(); LocalDate localDate = LocalDate.now();
List<Visits> list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); // List<Visits> list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString());
map.put("weekDays",list.stream().map(Visits::getWeekDay).collect(Collectors.toList())); // map.put("weekDays",list.stream().map(Visits::getWeekDay).collect(Collectors.toList()));
map.put("visitsData",list.stream().map(Visits::getPvCounts).collect(Collectors.toList())); // map.put("visitsData",list.stream().map(Visits::getPvCounts).collect(Collectors.toList()));
map.put("ipData",list.stream().map(Visits::getIpCounts).collect(Collectors.toList())); // map.put("ipData",list.stream().map(Visits::getIpCounts).collect(Collectors.toList()));
return map; return map;
} }
} }

View File

@ -0,0 +1,17 @@
package co.yixiang.modules.monitor.service.mapper;
import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.modules.monitor.domain.Visits;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface VisitsMapper extends CoreMapper<Visits> {
@Select("select * FROM visits where create_time between #{time1} and #{time2}")
List<Visits> findAllVisits(@Param("time1") String time1, @Param("time2")String time2);
}