bug--修复jpa移除后启动统计报错
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
package co.yixiang.modules.monitor.config;
|
||||
|
||||
import co.yixiang.modules.monitor.service.VisitsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -13,8 +12,11 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class VisitsInitialization implements ApplicationRunner {
|
||||
|
||||
@Autowired
|
||||
private VisitsService visitsService;
|
||||
private final VisitsService visitsService;
|
||||
|
||||
public VisitsInitialization(VisitsService visitsService) {
|
||||
this.visitsService = visitsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
@ -22,4 +24,4 @@ public class VisitsInitialization implements ApplicationRunner {
|
||||
visitsService.save();
|
||||
System.out.println("--------------- 初始化站点统计完成 ---------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,12 @@
|
||||
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 javax.persistence.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
/**
|
||||
@ -10,27 +15,21 @@ import java.sql.Timestamp;
|
||||
* @author Zheng Jie
|
||||
* @date 2018-12-13
|
||||
*/
|
||||
@Entity
|
||||
@Data
|
||||
@Table(name = "visits")
|
||||
public class Visits {
|
||||
@TableName( "visits")
|
||||
public class Visits implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
@Column(unique = true)
|
||||
private String date;
|
||||
|
||||
@Column(name = "pv_counts")
|
||||
private Long pvCounts;
|
||||
|
||||
@Column(name = "ip_counts")
|
||||
private Long ipCounts;
|
||||
|
||||
@Column(name = "create_time")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Timestamp createTime;
|
||||
|
||||
@Column(name = "week_day")
|
||||
private String weekDay;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
@ -8,12 +8,14 @@
|
||||
*/
|
||||
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 javax.servlet.http.HttpServletRequest;
|
||||
|
||||
|
||||
public interface VisitsService {
|
||||
public interface VisitsService extends BaseService<Visits> {
|
||||
|
||||
/**
|
||||
* 提供给定时任务,每天0点执行
|
||||
|
@ -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;
|
||||
|
||||
import co.yixiang.modules.monitor.domain.Visits;
|
||||
import co.yixiang.modules.monitor.repository.VisitsRepository;
|
||||
import co.yixiang.modules.monitor.service.VisitsService;
|
||||
import co.yixiang.common.service.impl.BaseServiceImpl;
|
||||
import co.yixiang.logging.service.mapper.LogMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import co.yixiang.modules.monitor.domain.Visits;
|
||||
import co.yixiang.modules.monitor.service.VisitsService;
|
||||
import co.yixiang.modules.monitor.service.mapper.VisitsMapper;
|
||||
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.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -24,47 +17,60 @@ import java.time.LocalDate;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author hupeng
|
||||
* @date 2020-05-20
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
@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 VisitsMapper visitsMapper;
|
||||
|
||||
public VisitsServiceImpl(LogMapper logMapper, VisitsMapper visitsMapper) {
|
||||
this.logMapper = logMapper;
|
||||
this.visitsMapper = visitsMapper;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
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){
|
||||
visits = new Visits();
|
||||
visits.setWeekDay(StringUtils.getWeekDay());
|
||||
visits.setPvCounts(1L);
|
||||
visits.setIpCounts(1L);
|
||||
visits.setDate(localDate.toString());
|
||||
visitsRepository.save(visits);
|
||||
this.save(visits);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void count(HttpServletRequest request) {
|
||||
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);
|
||||
long ipCounts = logMapper.findIp(localDate.toString(), localDate.plusDays(1).toString());
|
||||
visits.setIpCounts(ipCounts);
|
||||
visitsRepository.save(visits);
|
||||
this.saveOrUpdate(visits);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object get() {
|
||||
Map map = new HashMap();
|
||||
Map<String,Object> map = new HashMap<>(4);
|
||||
LocalDate localDate = LocalDate.now();
|
||||
Visits visits = visitsRepository.findByDate(localDate.toString());
|
||||
List<Visits> list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString());
|
||||
Visits visits = this.getOne(new QueryWrapper<Visits>().lambda()
|
||||
.eq(Visits::getDate,localDate.toString()));
|
||||
List<Visits> list = visitsMapper.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString());
|
||||
|
||||
long recentVisits = 0, recentIp = 0;
|
||||
for (Visits data : list) {
|
||||
@ -80,12 +86,12 @@ public class VisitsServiceImpl implements VisitsService {
|
||||
|
||||
@Override
|
||||
public Object getChartData() {
|
||||
Map map = new HashMap();
|
||||
LocalDate localDate = LocalDate.now();
|
||||
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("visitsData",list.stream().map(Visits::getPvCounts).collect(Collectors.toList()));
|
||||
map.put("ipData",list.stream().map(Visits::getIpCounts).collect(Collectors.toList()));
|
||||
Map<String,Object> map = new HashMap<>(3);
|
||||
LocalDate localDate = LocalDate.now();
|
||||
// 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("visitsData",list.stream().map(Visits::getPvCounts).collect(Collectors.toList()));
|
||||
// map.put("ipData",list.stream().map(Visits::getIpCounts).collect(Collectors.toList()));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
Reference in New Issue
Block a user