仪表盘

This commit is contained in:
x ronger 2019-12-05 21:45:16 +08:00
parent 1f1ce5b4c1
commit 6b363cf37b
9 changed files with 154 additions and 10 deletions

View File

@ -23,29 +23,33 @@ import java.util.List;
/**
* Spring MVC 配置
* @author ronger
*/
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
private final Logger logger = LoggerFactory.getLogger(WebMvcConfigurer.class);
// @Value("${env}")
// private String env;//当前激活的配置文件
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.WriteMapNullValue,//保留空的字段
SerializerFeature.WriteNullStringAsEmpty);//String null -> ""
//SerializerFeature.WriteNullNumberAsZero);//Number null -> 0
config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect); //关闭循环引用
// 保留空的字段
config.setSerializerFeatures(SerializerFeature.WriteMapNullValue,
//String null -> ""
SerializerFeature.WriteNullStringAsEmpty);
// SerializerFeature.WriteNullNumberAsZero);//Number null -> 0
//关闭循环引用
config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);
converter.setFastJsonConfig(config);
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON));
converter.setDefaultCharset(Charset.forName("UTF-8"));
converters.add(0, converter);
}
//解决跨域问题
/**
* 解决跨域问题
* */
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
@ -59,10 +63,11 @@ public class WebMvcConfigurer extends WebMvcConfigurationSupport {
return new RestAuthTokenInterceptor();
}
//添加拦截器
/**
* 添加拦截器
* */
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO 先不拦截接口,进行测试
registry.addInterceptor(restAuthTokenInterceptor()).addPathPatterns("/api/**")
.excludePathPatterns("/api/v1/console/**","/api/v1/article/articles/**","/api/v1/article/detail/**","/api/v1/topic/**","/api/v1/user/**");

View File

@ -0,0 +1,22 @@
package com.rymcu.vertical.dto.admin;
import lombok.Data;
/**
* @author ronger
*/
@Data
public class Dashboard {
private Integer countUserNum;
private Integer newUserNum;
private Integer countArticleNum;
private Integer newArticleNum;
private Integer countViewNum;
private Integer toadyViewNum;
}

View File

@ -11,6 +11,9 @@ import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* @author ronger
*/
@Data
@Table(name = "vertical_permission")
public class Permission implements Serializable,Cloneable {

View File

@ -0,0 +1,22 @@
package com.rymcu.vertical.mapper;
/**
* @author ronger
*/
public interface DashboardMapper {
/**
* 获取总用户数
* @return
* */
Integer selectUserCount();
/**
* 获取新注册用户数
* @return
* */
Integer selectNewUserCount();
Integer selectArticleCount();
Integer selectNewArticleCount();
}

View File

@ -0,0 +1,15 @@
package com.rymcu.vertical.service;
import com.rymcu.vertical.dto.admin.Dashboard;
/**
* @author ronger
*/
public interface DashboardService {
/**
* 统计系统数据
* @return
* */
Dashboard dashboard();
}

View File

@ -0,0 +1,31 @@
package com.rymcu.vertical.service.impl;
import com.rymcu.vertical.dto.admin.Dashboard;
import com.rymcu.vertical.mapper.DashboardMapper;
import com.rymcu.vertical.service.DashboardService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @author ronger
*/
@Service
public class DashboardServiceImpl implements DashboardService {
@Resource
private DashboardMapper dashboardMapper;
@Override
public Dashboard dashboard() {
Dashboard dashboard = new Dashboard();
dashboard.setCountUserNum(dashboardMapper.selectUserCount());
dashboard.setNewUserNum(dashboardMapper.selectNewUserCount());
dashboard.setCountArticleNum(dashboardMapper.selectArticleCount());
dashboard.setNewArticleNum(dashboardMapper.selectNewArticleCount());
// TODO 待完成浏览量统计
dashboard.setCountViewNum(1000);
dashboard.setToadyViewNum(100);
return dashboard;
}
}

View File

@ -0,0 +1,28 @@
package com.rymcu.vertical.web.api.admin;
import com.rymcu.vertical.core.result.GlobalResult;
import com.rymcu.vertical.core.result.GlobalResultGenerator;
import com.rymcu.vertical.dto.admin.Dashboard;
import com.rymcu.vertical.service.DashboardService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author ronger
*/
@RestController
@RequestMapping("/api/v1/admin/dashboard")
public class DashboardController {
@Resource
private DashboardService dashboardService;
@GetMapping
public GlobalResult dashboard(){
Dashboard dashboard = dashboardService.dashboard();
return GlobalResultGenerator.genSuccessResult(dashboard);
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rymcu.vertical.mapper.DashboardMapper">
<select id="selectUserCount" resultType="java.lang.Integer">
select count(*) from vertical_user
</select>
<select id="selectNewUserCount" resultType="java.lang.Integer">
select count(*) from vertical_user where created_time between date_sub(sysdate(),interval 1 day)
and date_sub(sysdate(),interval - 1 day)
</select>
<select id="selectArticleCount" resultType="java.lang.Integer">
select count(*) from vertical_article
</select>
<select id="selectNewArticleCount" resultType="java.lang.Integer">
select count(*) from vertical_article where created_time between date_sub(sysdate(),interval 1 day)
and date_sub(sysdate(),interval - 1 day)
</select>
</mapper>

View File

@ -5,7 +5,7 @@
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id"/>
<id column="id" property="idPermission"/>
<result column="permission_category" property="permissionCategory"/>
</resultMap>