Commit d802b0db by chenzy

【新增】每日用户量和总用户量和swagger

parent df6bd8a0
......@@ -46,6 +46,11 @@
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
<build>
......
package com.keymobile.syncdata.api;
import com.keymobile.syncdata.service.StaticLoginData;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/static")
public class StaticDataController {
@Autowired
private StaticLoginData staticLoginData;
@GetMapping("/totalUserCount")
public Long getTotalUserCount() {
return staticLoginData.getTotalUserCount();
}
@GetMapping("/todayUserCount")
public Long todayUserCount() {
return staticLoginData.getTodayUserCount();
}
}
......@@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -30,12 +31,12 @@ public class SyncDataController {
private SyncDataService syncDataService;
@RequestMapping("/syncSystemData")
@GetMapping("/syncSystemData")
public void SyncSystemData() {
syncDataService.syncSystemData();
}
@RequestMapping("/getSystemData")
@GetMapping("/getSystemData")
public List<Document> getSystemData() {
return syncDataService.getSystemData();
}
......
package com.keymobile.syncdata.config;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenAPIConfig {
@Bean
public OpenAPI myOpenAPI() {
Info info = new Info()
.title("syncdata RESTful APIs")
.version("1.0")
.description("深铁内网数据同步服务");
return new OpenAPI().info(info);
}
}
package com.keymobile.syncdata.service;
public interface StaticLoginData {
Long getTotalUserCount();
Long getTodayUserCount();
}
package com.keymobile.syncdata.service.impl;
import com.keymobile.syncdata.service.StaticLoginData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
@Service
public class StaticLoginDataImpl implements StaticLoginData {
private static final String DAILY_LOGIN_COUNT_PREFIX = "daily_login_count:";
@Autowired
private RedisTemplate<String, String> redisTemplate;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Long getTotalUserCount() {
// 获取所有以 DAILY_LOGIN_COUNT_PREFIX 开头的键
Set<String> keys = redisTemplate.keys(DAILY_LOGIN_COUNT_PREFIX + "*");
AtomicLong totalCount = new AtomicLong();
keys.forEach(key -> {
Long setSize = redisTemplate.opsForSet().size(key);
if (setSize != null) {
totalCount.addAndGet(setSize);
}
});
return totalCount.get();
}
@Override
public Long getTodayUserCount() {
String today = getTodayDate();
String dailyKey = DAILY_LOGIN_COUNT_PREFIX + today;
return redisTemplate.opsForSet().size(dailyKey);
}
private String getTodayDate() {
return dateFormat.format(new Date());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment