feat: 接入旧站管理端并完整迁移后台能力
This commit is contained in:
@@ -41,6 +41,10 @@ func (h *Handler) List(c *gin.Context) {
|
||||
Keyword: strings.TrimSpace(c.Query("keyword")),
|
||||
Status: strings.TrimSpace(c.Query("status")),
|
||||
HasDepositFreeQuota: parseBoolQuery(c.Query("has_deposit_free_quota")),
|
||||
QualityOwnerOnly: parseBoolQuery(c.Query("quality_owner_only")),
|
||||
DepositFreeQuota: normalizeEnumQuery(c.Query("deposit_free_quota"), "has", "none"),
|
||||
OwnerType: normalizeEnumQuery(c.Query("owner_type"), "quality", "normal"),
|
||||
GrowthLevel: strings.TrimSpace(c.Query("growth_level")),
|
||||
}
|
||||
result, err := h.service.List(c.Request.Context(), page, pageSize, query)
|
||||
if err != nil {
|
||||
@@ -59,6 +63,16 @@ func parseBoolQuery(value string) bool {
|
||||
}
|
||||
}
|
||||
|
||||
func normalizeEnumQuery(value string, allowed ...string) string {
|
||||
value = strings.ToLower(strings.TrimSpace(value))
|
||||
for _, item := range allowed {
|
||||
if value == item {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h *Handler) Freeze(c *gin.Context) {
|
||||
adminID, ok := currentAdminID(c)
|
||||
if !ok {
|
||||
@@ -143,6 +157,29 @@ func (h *Handler) AdjustGrowthPoints(c *gin.Context) {
|
||||
response.OK(c, item)
|
||||
}
|
||||
|
||||
func (h *Handler) AdjustGrowthLevel(c *gin.Context) {
|
||||
adminID, ok := currentAdminID(c)
|
||||
if !ok {
|
||||
response.Unauthorized(c, "缺少管理员上下文")
|
||||
return
|
||||
}
|
||||
userID, ok := parseID(c)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
var req GrowthLevelAdjustRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.BadRequest(c, "成长等级调整参数不正确")
|
||||
return
|
||||
}
|
||||
item, err := h.service.AdjustGrowthLevel(c.Request.Context(), adminID, userID, req, auditMeta(c))
|
||||
if err != nil {
|
||||
writeAdminUserError(c, err)
|
||||
return
|
||||
}
|
||||
response.OK(c, item)
|
||||
}
|
||||
|
||||
func (h *Handler) RevokeRealname(c *gin.Context) {
|
||||
adminID, ok := currentAdminID(c)
|
||||
if !ok {
|
||||
@@ -264,6 +301,12 @@ func writeAdminUserError(c *gin.Context, err error) {
|
||||
response.BadRequest(c, "请填写 2-200 字的积分调整原因")
|
||||
case errors.Is(err, ErrGrowthPointsUnchanged):
|
||||
response.Error(c, http.StatusConflict, "growth_points_unchanged", "目标积分与当前积分相同")
|
||||
case errors.Is(err, ErrInvalidGrowthLevel):
|
||||
response.BadRequest(c, "目标成长等级不正确")
|
||||
case errors.Is(err, ErrInvalidGrowthLevelReason):
|
||||
response.BadRequest(c, "请填写 2-200 字的等级调整原因")
|
||||
case errors.Is(err, ErrGrowthLevelUnchanged):
|
||||
response.Error(c, http.StatusConflict, "growth_level_unchanged", "目标等级与当前手动等级相同")
|
||||
case IsNotFound(err):
|
||||
response.Error(c, http.StatusNotFound, "not_found", "用户不存在")
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user