feat: Admin 友链申请回链复检按钮

调用 RecheckReciprocal,开启检测且有回链页时可复检。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-30 01:53:14 +08:00
parent c8533b6184
commit 92b68b9eef
5 changed files with 31 additions and 2 deletions

View File

@@ -32,6 +32,7 @@ type adminFriendLinkApplyRow struct {
RecipNote string
CreatedAt string
CanReview bool
CanRecheck bool
}
type adminFriendLinksData struct {
@@ -92,6 +93,7 @@ func (d Deps) renderAdminFriendLinks(ctx *webctx.Context, errMsg string) {
RecipNote: a.ReciprocalCheckNote,
CreatedAt: a.CreatedAt.Format("2006-01-02 15:04"),
CanReview: a.Status == models.FriendLinkApplyStatusPending,
CanRecheck: data.ReciprocalCheck && strings.TrimSpace(a.ReciprocalPageURL) != "",
})
}
}
@@ -210,3 +212,23 @@ func (d Deps) AdminFriendLinkRejectPost(c *gin.Context) {
ctx.SetFlash("已拒绝友链申请")
ctx.Redirect("/admin/friend-links")
}
// AdminFriendLinkRecheckPost 重新检测回链
func (d Deps) AdminFriendLinkRecheckPost(c *gin.Context) {
ctx := d.ctx(c)
if !ctx.CheckCSRF() {
d.renderAdminFriendLinks(ctx, "无效请求,请重试")
return
}
if d.FriendLink == nil {
d.renderAdminFriendLinks(ctx, "友链服务未就绪")
return
}
id64, _ := strconv.ParseUint(c.Param("id"), 10, 64)
if _, err := d.FriendLink.RecheckReciprocal(uint(id64), d.publicBaseURL(c)); err != nil {
d.renderAdminFriendLinks(ctx, err.Error())
return
}
ctx.SetFlash("已开始重新检测回链")
ctx.Redirect("/admin/friend-links")
}

View File

@@ -84,6 +84,7 @@ func Register(r *gin.Engine, deps Deps, authMW *auth.AuthMiddleware) {
admin.POST("/friend-links/brand/delete", deps.AdminFriendLinksBrandDeletePost)
admin.POST("/friend-links/applies/:id/approve", deps.AdminFriendLinkApprovePost)
admin.POST("/friend-links/applies/:id/reject", deps.AdminFriendLinkRejectPost)
admin.POST("/friend-links/applies/:id/recheck", deps.AdminFriendLinkRecheckPost)
admin.GET("/pages", deps.AdminPagesGet)
admin.POST("/pages", deps.AdminPageCreate)
admin.GET("/pages/:id/edit", deps.AdminPageEditGet)