mirror of
https://github.com/ctwj/urldb.git
synced 2025-11-25 03:15:04 +08:00
update: 资源优化
This commit is contained in:
@@ -46,11 +46,14 @@ func GetResources(c *gin.Context) {
|
||||
resources, total, err = repoManager.ResourceRepository.FindWithRelationsPaginated(page, pageSize)
|
||||
}
|
||||
|
||||
// 新增:只要有search参数就记录
|
||||
// 新增:只要有search参数就记录(但管理员不记录)
|
||||
if realSearch != "" {
|
||||
ip := c.ClientIP()
|
||||
userAgent := c.GetHeader("User-Agent")
|
||||
repoManager.SearchStatRepository.RecordSearch(realSearch, ip, userAgent)
|
||||
user, _ := c.Get("user")
|
||||
if user == nil || (user != nil && user.(entity.User).Role != "admin") {
|
||||
ip := c.ClientIP()
|
||||
userAgent := c.GetHeader("User-Agent")
|
||||
repoManager.SearchStatRepository.RecordSearch(realSearch, ip, userAgent)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
@@ -286,3 +289,21 @@ func IncrementResourceViewCount(c *gin.Context) {
|
||||
}
|
||||
SuccessResponse(c, gin.H{"message": "浏览次数+1"})
|
||||
}
|
||||
|
||||
// BatchDeleteResources 批量删除资源
|
||||
func BatchDeleteResources(c *gin.Context) {
|
||||
var req struct {
|
||||
IDs []uint `json:"ids"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil || len(req.IDs) == 0 {
|
||||
ErrorResponse(c, "参数错误", 400)
|
||||
return
|
||||
}
|
||||
count := 0
|
||||
for _, id := range req.IDs {
|
||||
if err := repoManager.ResourceRepository.Delete(id); err == nil {
|
||||
count++
|
||||
}
|
||||
}
|
||||
SuccessResponse(c, gin.H{"deleted": count, "message": "批量删除成功"})
|
||||
}
|
||||
|
||||
1
main.go
1
main.go
@@ -125,6 +125,7 @@ func main() {
|
||||
api.GET("/resources/:id", handlers.GetResourceByID)
|
||||
api.GET("/resources/check-exists", handlers.CheckResourceExists)
|
||||
api.POST("/resources/:id/view", handlers.IncrementResourceViewCount)
|
||||
api.DELETE("/resources/batch", middleware.AuthMiddleware(), middleware.AdminMiddleware(), handlers.BatchDeleteResources)
|
||||
|
||||
// 分类管理
|
||||
api.GET("/categories", handlers.GetCategories)
|
||||
|
||||
@@ -50,7 +50,9 @@ export const useResourceApi = () => {
|
||||
const getResourcesByPan = (panId: number, params?: any) => useApiFetch('/resources', { params: { ...params, pan_id: panId } }).then(parseApiResponse)
|
||||
// 新增:统一的资源访问次数上报
|
||||
const incrementViewCount = (id: number) => useApiFetch(`/resources/${id}/view`, { method: 'POST' })
|
||||
return { getResources, getResource, createResource, updateResource, deleteResource, searchResources, getResourcesByPan, incrementViewCount }
|
||||
// 新增:批量删除资源
|
||||
const batchDeleteResources = (ids: number[]) => useApiFetch('/resources/batch', { method: 'DELETE', body: { ids } }).then(parseApiResponse)
|
||||
return { getResources, getResource, createResource, updateResource, deleteResource, searchResources, getResourcesByPan, incrementViewCount, batchDeleteResources }
|
||||
}
|
||||
|
||||
export const useAuthApi = () => {
|
||||
|
||||
@@ -599,7 +599,7 @@ const handleBatchAction = async () => {
|
||||
switch (batchAction.value) {
|
||||
case 'delete':
|
||||
if (confirm(`确定要删除选中的 ${selectedResources.value.length} 个资源吗?`)) {
|
||||
await Promise.all(selectedResources.value.map(id => resourceApi.deleteResource(id)))
|
||||
await resourceApi.batchDeleteResources(selectedResources.value)
|
||||
alert('批量删除成功')
|
||||
}
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user