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); } }