feat(character-banner): 캐릭터 배너 페이지 추가
- 리스트, 등록, 수정, 삭제 추가 - 페이징은 스크롤 로딩으로 구현
This commit is contained in:
@@ -8,9 +8,9 @@ async function getCharacterList(page = 1, size = 20) {
|
||||
}
|
||||
|
||||
// 캐릭터 검색
|
||||
async function searchCharacters(keyword, page = 1, size = 20) {
|
||||
return Vue.axios.get('/api/admin/chat/character/search', {
|
||||
params: { keyword, page, size }
|
||||
async function searchCharacters(searchTerm, page = 1, size = 20) {
|
||||
return Vue.axios.get('/admin/chat/banner/search-character', {
|
||||
params: { searchTerm, page: page - 1, size }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -74,10 +74,75 @@ async function updateCharacter(characterData, image = null) {
|
||||
})
|
||||
}
|
||||
|
||||
// 캐릭터 배너 리스트 조회
|
||||
async function getCharacterBannerList(page = 1, size = 20) {
|
||||
return Vue.axios.get('/admin/chat/banner/list', {
|
||||
params: { page: page - 1, size }
|
||||
})
|
||||
}
|
||||
|
||||
// 캐릭터 배너 등록
|
||||
async function createCharacterBanner(bannerData) {
|
||||
const formData = new FormData()
|
||||
|
||||
// 이미지 FormData에 추가
|
||||
if (bannerData.image) formData.append('image', bannerData.image)
|
||||
|
||||
// 캐릭터 ID를 JSON 문자열로 변환하여 request 필드에 추가
|
||||
const requestData = {
|
||||
characterId: bannerData.characterId
|
||||
}
|
||||
|
||||
formData.append('request', JSON.stringify(requestData))
|
||||
|
||||
return Vue.axios.post('/admin/chat/banner/register', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 캐릭터 배너 수정
|
||||
async function updateCharacterBanner(bannerData) {
|
||||
const formData = new FormData()
|
||||
|
||||
// 이미지가 있는 경우에만 FormData에 추가
|
||||
if (bannerData.image) formData.append('image', bannerData.image)
|
||||
|
||||
// 캐릭터 ID와 배너 ID를 JSON 문자열로 변환하여 request 필드에 추가
|
||||
const requestData = {
|
||||
characterId: bannerData.characterId,
|
||||
bannerId: bannerData.bannerId
|
||||
}
|
||||
|
||||
formData.append('request', JSON.stringify(requestData))
|
||||
|
||||
return Vue.axios.put('/admin/chat/banner/update', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 캐릭터 배너 삭제
|
||||
async function deleteCharacterBanner(bannerId) {
|
||||
return Vue.axios.delete(`/admin/chat/banner/${bannerId}`)
|
||||
}
|
||||
|
||||
// 캐릭터 배너 순서 변경
|
||||
async function updateCharacterBannerOrder(bannerIds) {
|
||||
return Vue.axios.put('/admin/chat/banner/orders', {ids: bannerIds})
|
||||
}
|
||||
|
||||
export {
|
||||
getCharacterList,
|
||||
searchCharacters,
|
||||
getCharacter,
|
||||
createCharacter,
|
||||
updateCharacter
|
||||
updateCharacter,
|
||||
getCharacterBannerList,
|
||||
createCharacterBanner,
|
||||
updateCharacterBanner,
|
||||
deleteCharacterBanner,
|
||||
updateCharacterBannerOrder
|
||||
}
|
||||
|
Reference in New Issue
Block a user