package com.fzu.studyroombackend.controller.backend;
import cn.hutool.core.util.ObjectUtil;
import com.fzu.studyroombackend.common.Result;
import com.fzu.studyroombackend.service.InvolutionUserService;
import com.fzu.studyroombackend.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
*
* 后台数据概览接口
*
*
* @author 詹鹏翔
* @since 2022/5/19 4:52
*/
@RequestMapping("/backend/data")
@Slf4j
@RestController
public class DataController {
@Autowired
RedisUtils redisUtils;
@Autowired
InvolutionUserService userService;
/**
* @param request
* @return com.fzu.studyroombackend.common.Result
* @author 詹鹏翔
* @description 获取在线人数接口
* @since 2022/5/19 5:22
*/
@GetMapping("/getOnlineNum")
Result getOnlineNum(HttpServletRequest request) {
if (!request.getMethod().equals("GET")) {
return Result.fail("请以GET请求");
}
//判断有无权限
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Collection set = authentication.getAuthorities();
if (ObjectUtil.isNull(set) || set.size() == 0) {
return Result.fail("无权限!");
}
Map result = new HashMap<>();
Set keys = redisUtils.keys("sys:user:" + "*");
int totalNum = 0;
int onlineNum = 0;
totalNum = userService.count();
if (ObjectUtil.isNotNull(keys)) {
onlineNum = keys.size();
}
result.put("totalNum", totalNum);
result.put("onlineNum", onlineNum);
return Result.success(result);
}
/**
* @param request
* @return com.fzu.studyroombackend.common.Result
* @author 詹鹏翔
* @description 统计app访问量接口
* @since 2022/5/19 5:03
*/
@GetMapping("/getVisitsNum")
Result getVisitsNum(HttpServletRequest request) {
if (!request.getMethod().equals("GET")) {
return Result.fail("请以GET请求");
}
//判断有无权限
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Collection set = authentication.getAuthorities();
if (ObjectUtil.isNull(set) || set.size() == 0) {
return Result.fail("无权限!");
}
Map result = new HashMap<>();
int num = 0;
if (redisUtils.hasKey("sys:visit")) {
num = (int) redisUtils.get("sys:visit");
}
result.put("visitsNum", num);
return Result.success(result);
}
/**
* @param request
* @return com.fzu.studyroombackend.common.Result
* @author 詹鹏翔
* @description 获取在线对战数据接口
* @since 2022/5/19 5:32
*/
@GetMapping("/getStudyOnlineData")
Result getStudyOnlineData(HttpServletRequest request) {
if (!request.getMethod().equals("GET")) {
return Result.fail("请以GET请求");
}
//判断有无权限
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Collection set = authentication.getAuthorities();
if (ObjectUtil.isNull(set) || set.size() == 0) {
return Result.fail("无权限! ");
}
Map result = new HashMap<>();
Set areaKeys = redisUtils.keys("sys:area:" + "*");
Set pkKeys = redisUtils.keys("sys:pk:" + "*");
int curPKNum = 0;
int curAreaNum = 0;
if (ObjectUtil.isNotNull(pkKeys)) {
curPKNum = pkKeys.size();
}
if (ObjectUtil.isNotNull(areaKeys)) {
curAreaNum = areaKeys.size();
}
result.put("curPKNum", curPKNum);
result.put("curAreaNum", curAreaNum);
return Result.success(result);
}
}