diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/config/VisitsInitialization.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/config/VisitsInitialization.java index 0c98c48f..f1112878 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/monitor/config/VisitsInitialization.java +++ b/yshop-api/src/main/java/co/yixiang/modules/monitor/config/VisitsInitialization.java @@ -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("--------------- 初始化站点统计完成 ---------------"); } -} \ No newline at end of file +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/domain/Visits.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/domain/Visits.java index 7483c845..04653c63 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/monitor/domain/Visits.java +++ b/yshop-api/src/main/java/co/yixiang/modules/monitor/domain/Visits.java @@ -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; } diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/repository/VisitsRepository.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/repository/VisitsRepository.java deleted file mode 100644 index 41843b45..00000000 --- a/yshop-api/src/main/java/co/yixiang/modules/monitor/repository/VisitsRepository.java +++ /dev/null @@ -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 { - - /** - * 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 findAllVisits(String date1, String date2); -} diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/service/VisitsService.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/VisitsService.java index 445d3b4d..063f8f50 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/monitor/service/VisitsService.java +++ b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/VisitsService.java @@ -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 { /** * 提供给定时任务,每天0点执行 diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/service/impl/VisitsServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/impl/VisitsServiceImpl.java index 92ba935a..2bd7eecb 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/monitor/service/impl/VisitsServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/impl/VisitsServiceImpl.java @@ -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 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().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().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 map = new HashMap<>(4); LocalDate localDate = LocalDate.now(); - Visits visits = visitsRepository.findByDate(localDate.toString()); - List list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); + Visits visits = this.getOne(new QueryWrapper().lambda() + .eq(Visits::getDate,localDate.toString())); + List 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 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 map = new HashMap<>(3); + LocalDate localDate = LocalDate.now(); +// List 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; } } diff --git a/yshop-api/src/main/java/co/yixiang/modules/monitor/service/mapper/VisitsMapper.java b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/mapper/VisitsMapper.java new file mode 100644 index 00000000..43793503 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/monitor/service/mapper/VisitsMapper.java @@ -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 { + @Select("select * FROM visits where create_time between #{time1} and #{time2}") + List findAllVisits(@Param("time1") String time1, @Param("time2")String time2); +}