api测试 #7

Merged
hnu202326010219 merged 3 commits from panjunhui_branch into develop 4 months ago

@ -44,6 +44,7 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
@ -77,5 +78,27 @@
<!-- 通常不需要手动配置 compiler plugin除非有特殊需求 -->
<!-- 如果您没有特殊需求,可以完全删除 <build> 部分 -->
<build>
<plugins>
<!-- 让 Lombok 在 Maven 编译期生效 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -13,7 +13,7 @@ public class CorsConfig {
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("http://localhost:5173");
config.addAllowedOrigin("http://localhost:3000");
config.addAllowedMethod("*");
config.addAllowedHeader("*");
config.setAllowCredentials(true);

@ -1,232 +1,36 @@
<script setup>
import { ref, onMounted, computed, watch } from 'vue'
import { useRouter } from 'vue-router'
import request from '@/utils/request'
const router = useRouter()
// -
const allPlayers = ref([
{
id: '1111122222',
name: '玩家名',
level: 12,
coins: 2000,
registerTime: '2024-01-01 10:00:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player1',
},
{
id: '1111122223',
name: '玩家名',
level: 15,
coins: 3500,
registerTime: '2024-01-02 14:30:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player2',
},
{
id: '1111122224',
name: '玩家名',
level: 8,
coins: 1200,
registerTime: '2024-01-03 09:15:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player3',
},
{
id: '1111122225',
name: '玩家名',
level: 20,
coins: 5000,
registerTime: '2024-01-04 16:45:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player4',
},
{
id: '1111122226',
name: '玩家名',
level: 5,
coins: 800,
registerTime: '2024-01-05 11:20:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player5',
},
{
id: '1111122227',
name: '玩家名',
level: 18,
coins: 4200,
registerTime: '2024-01-06 08:30:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player6',
},
{
id: '1111122228',
name: '玩家名',
level: 10,
coins: 1500,
registerTime: '2024-01-07 13:45:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player7',
},
{
id: '1111122229',
name: '玩家名',
level: 25,
coins: 6800,
registerTime: '2024-01-08 16:20:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player8',
},
{
id: '1111122230',
name: '玩家名',
level: 7,
coins: 950,
registerTime: '2024-01-09 10:10:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player9',
},
{
id: '1111122231',
name: '玩家名',
level: 14,
coins: 2800,
registerTime: '2024-01-10 14:00:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player10',
},
{
id: '1111122232',
name: '玩家名',
level: 22,
coins: 5500,
registerTime: '2024-01-11 09:30:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player11',
},
{
id: '1111122233',
name: '玩家名',
level: 9,
coins: 1100,
registerTime: '2024-01-12 15:45:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player12',
},
{
id: '1111122234',
name: '玩家名',
level: 16,
coins: 3800,
registerTime: '2024-01-13 11:20:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player13',
},
{
id: '1111122235',
name: '玩家名',
level: 11,
coins: 2100,
registerTime: '2024-01-14 12:30:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player14',
},
{
id: '1111122236',
name: '玩家名',
level: 19,
coins: 4600,
registerTime: '2024-01-15 14:15:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player15',
},
{
id: '1111122237',
name: '玩家名',
level: 6,
coins: 750,
registerTime: '2024-01-16 09:45:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player16',
},
{
id: '1111122238',
name: '玩家名',
level: 23,
coins: 6200,
registerTime: '2024-01-17 16:00:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player17',
},
{
id: '1111122239',
name: '玩家名',
level: 13,
coins: 2400,
registerTime: '2024-01-18 10:20:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player18',
},
{
id: '1111122240',
name: '玩家名',
level: 17,
coins: 4100,
registerTime: '2024-01-19 13:50:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player19',
},
{
id: '1111122241',
name: '玩家名',
level: 4,
coins: 600,
registerTime: '2024-01-20 08:00:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player20',
},
{
id: '1111122242',
name: '玩家名',
level: 21,
coins: 5800,
registerTime: '2024-01-21 15:30:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player21',
},
{
id: '1111122243',
name: '玩家名',
level: 9,
coins: 1300,
registerTime: '2024-01-22 11:10:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player22',
},
{
id: '1111122244',
name: '玩家名',
level: 24,
coins: 7200,
registerTime: '2024-01-23 17:25:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player23',
},
{
id: '1111122245',
name: '玩家名',
level: 10,
coins: 1700,
registerTime: '2024-01-24 09:15:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player24',
},
{
id: '1111122246',
name: '玩家名',
level: 18,
coins: 4400,
registerTime: '2024-01-25 14:40:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player25',
},
{
id: '1111122247',
name: '玩家名',
level: 7,
coins: 900,
registerTime: '2024-01-26 10:55:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player26',
},
{
id: '1111122248',
name: '玩家名',
level: 26,
coins: 8000,
registerTime: '2024-01-27 18:20:00',
avatar: 'https://api.dicebear.com/9.x/avataaars/svg?seed=Player27',
},
])
const getPlayerList = (params) => {
return request({
url: '/player/list',
method: 'get',
params,
})
}
const fetchPlayers = async () => {
const res = await getPlayerList({
page: currentPage.value,
size: pageSize.value,
keyword: searchQuery.value || '',
})
if (res.code === 200) {
allPlayers.value = res.data.list
totalPlayers.value = res.data.total
}
}
const allPlayers = ref([])
const searchQuery = ref('')
const currentPage = ref(1)
const pageSize = 10
const pageSize = ref(20)
const totalPlayers = ref(0)
//
const filteredPlayers = computed(() => {
@ -235,9 +39,8 @@ const filteredPlayers = computed(() => {
}
const query = searchQuery.value.toLowerCase()
return allPlayers.value.filter(player =>
player.name.toLowerCase().includes(query) ||
player.id.toString().includes(query)
return allPlayers.value.filter(
(player) => player.name.toLowerCase().includes(query) || player.id.toString().includes(query)
)
})
@ -250,7 +53,7 @@ const paginatedPlayers = computed(() => {
//
const totalPages = computed(() => {
return Math.ceil(filteredPlayers.value.length / pageSize)
return Math.ceil(totalPlayers.value / pageSize.value)
})
//
@ -260,13 +63,15 @@ const viewPlayerDetail = (player) => {
//
const handleSearch = () => {
currentPage.value = 1 //
currentPage.value = 1
fetchPlayers()
}
//
const goToPage = (page) => {
if (page >= 1 && page <= totalPages.value) {
currentPage.value = page
fetchPlayers()
}
}
@ -324,7 +129,7 @@ watch([filteredPlayers, totalPages], () => {
})
onMounted(() => {
//
fetchPlayers()
})
</script>
@ -340,29 +145,41 @@ onMounted(() => {
@input="handleSearch"
/>
<button class="search-btn" @click="handleSearch">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.33333 12.6667C10.2789 12.6667 12.6667 10.2789 12.6667 7.33333C12.6667 4.38781 10.2789 2 7.33333 2C4.38781 2 2 4.38781 2 7.33333C2 10.2789 4.38781 12.6667 7.33333 12.6667Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14 14L11.1 11.1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7.33333 12.6667C10.2789 12.6667 12.6667 10.2789 12.6667 7.33333C12.6667 4.38781 10.2789 2 7.33333 2C4.38781 2 2 4.38781 2 7.33333C2 10.2789 4.38781 12.6667 7.33333 12.6667Z"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M14 14L11.1 11.1"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</button>
</div>
<!-- 玩家列表 -->
<div class="players-container">
<div
v-for="player in paginatedPlayers"
:key="player.id"
class="player-row"
>
<img :src="player.avatar" alt="Avatar" class="player-avatar" />
<div v-for="player in allPlayers" :key="player.id" class="player-row">
<img :src="player.avatarUrl" alt="Avatar" class="player-avatar" />
<div class="player-info">
<span class="player-name">玩家名 (Id: {{ player.id }})</span>
<span class="player-level">等级: {{ player.level }}</span>
<span class="player-coins">金币数量: {{ player.coins }}</span>
<span class="player-name">玩家名 (Id: {{ player.name }})</span>
<span class="player-level">等级: {{ player.vipLevel }}</span>
<span class="player-coins">金币数量: {{ player.gold }}</span>
</div>
<button class="detail-btn" @click="viewPlayerDetail(player)">
详情分析
</button>
<button class="detail-btn" @click="viewPlayerDetail(player)"></button>
</div>
</div>
@ -374,11 +191,7 @@ onMounted(() => {
<!-- 分页控件 -->
<div v-if="totalPages > 1" class="pagination-wrapper">
<div class="pagination">
<button
class="page-btn"
:disabled="currentPage === 1"
@click="goToPage(currentPage - 1)"
>
<button class="page-btn" :disabled="currentPage === 1" @click="goToPage(currentPage - 1)">
Previous
</button>
<div class="page-numbers">
@ -668,9 +481,9 @@ onMounted(() => {
.player-list-page {
padding: 2px 16px 12px 16px;
}
.search-section {
margin: 0 0 8px 0;
}
}
</style>
</style>

@ -6,15 +6,15 @@ export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': resolve(__dirname, 'src')
}
'@': resolve(__dirname, 'src'),
},
},
server: {
port: 3000,
port: 5173,
open: true,
host: true
host: true,
},
build: {
outDir: resolve(__dirname, '../../dist')
}
})
outDir: resolve(__dirname, '../../dist'),
},
})

Loading…
Cancel
Save