3.2 KiB
3.2 KiB
管理后台开发文档 - Part 1(权限 + DTO/VO)
管理后台复用主应用 Service/Repository 层,新增 Admin Controller,路由前缀
/api/admin,通过角色拦截隔离。
一、角色常量
package com.openclaw.constant;
public interface AdminRole {
String ADMIN = "ROLE_ADMIN"; // 超级管理员
String OPERATOR = "ROLE_OPERATOR"; // 运营
String AUDITOR = "ROLE_AUDITOR"; // 内容审核
String FINANCE = "ROLE_FINANCE"; // 财务
}
// SecurityConfig.java 追加
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/admin/**")
.hasAnyRole("ADMIN","OPERATOR","AUDITOR","FINANCE")
);
二、管理端 DTO
// AdminUserQueryDTO.java
@Data
public class AdminUserQueryDTO {
private String keyword; // 手机号/昵称
private String status; // active / banned
private Integer pageNum = 1;
private Integer pageSize = 20;
}
// AdminSkillQueryDTO.java
@Data
public class AdminSkillQueryDTO {
private String keyword;
private String status; // pending/approved/rejected/offline
private Long categoryId;
private Integer pageNum = 1;
private Integer pageSize = 20;
}
// SkillAuditDTO.java
@Data
public class SkillAuditDTO {
@NotNull private Long skillId;
@NotBlank private String action; // approve / reject
private String rejectReason;
}
// AdminOrderQueryDTO.java
@Data
public class AdminOrderQueryDTO {
private String keyword; // 订单号
private String status;
private LocalDate startDate;
private LocalDate endDate;
private Integer pageNum = 1;
private Integer pageSize = 20;
}
// AdjustPointsDTO.java
@Data
public class AdjustPointsDTO {
@NotNull private Integer delta; // 正数增加,负数扣减
private String remark;
}
// RefundProcessDTO.java
@Data
public class RefundProcessDTO {
@NotBlank private String action; // approve / reject
private String remark;
}
三、管理端 VO
// AdminUserVO.java
@Data
public class AdminUserVO {
private Long id;
private String phone, nickname, avatarUrl, status;
private Integer totalPoints, frozenPoints;
private LocalDateTime createdAt, lastLoginAt;
}
// AdminSkillVO.java
@Data
public class AdminSkillVO {
private Long id;
private String name, coverImageUrl, status, rejectReason;
private BigDecimal price;
private Boolean isFree;
private Long creatorId;
private LocalDateTime createdAt, auditedAt;
}
// AdminOrderVO.java
@Data
public class AdminOrderVO {
private Long id;
private String orderNo, status, paymentMethod;
private Long userId;
private BigDecimal totalAmount, cashAmount;
private Integer pointsUsed;
private LocalDateTime createdAt, paidAt;
}
// DashboardVO.java
@Data
public class DashboardVO {
private Long totalUsers, todayNewUsers, activeUsersLast7d;
private BigDecimal totalRevenue, revenueToday;
private Long totalOrders, ordersToday;
private Long totalSkills, pendingAuditSkills, totalDownloads;
}
文档版本:v1.0 | 创建日期:2026-03-16