feat: implement tenant-side creator audit feature and update related tests and documentation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -186,6 +186,36 @@ func (c *Creator) ListOrders(ctx fiber.Ctx, filter *dto.CreatorOrderListFilter)
|
||||
return services.Creator.ListOrders(ctx, tenantID, userID, filter)
|
||||
}
|
||||
|
||||
// List creator audit logs
|
||||
//
|
||||
// @Router /v1/t/:tenantCode/creator/audit-logs [get]
|
||||
// @Summary List creator audit logs
|
||||
// @Description 查询当前租户创作者侧审计日志(仅管理员可见)
|
||||
// @Tags CreatorCenter
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param page query int false "Page"
|
||||
// @Param limit query int false "Limit"
|
||||
// @Param operator_id query int false "Operator ID"
|
||||
// @Param operator_name query string false "Operator name"
|
||||
// @Param action query string false "Action"
|
||||
// @Param target_id query string false "Target ID"
|
||||
// @Param keyword query string false "Keyword"
|
||||
// @Param created_at_from query string false "Created at from (RFC3339)"
|
||||
// @Param created_at_to query string false "Created at to (RFC3339)"
|
||||
// @Success 200 {object} requests.Pager{items=[]dto.CreatorAuditLogItem}
|
||||
// @Bind filter query
|
||||
func (c *Creator) ListAuditLogs(ctx fiber.Ctx, filter *dto.CreatorAuditLogListFilter) (*requests.Pager, error) {
|
||||
if filter == nil {
|
||||
filter = &dto.CreatorAuditLogListFilter{}
|
||||
}
|
||||
|
||||
tenantID := getTenantID(ctx)
|
||||
userID := getUserID(ctx)
|
||||
|
||||
return services.Creator.ListAuditLogs(ctx, tenantID, userID, filter)
|
||||
}
|
||||
|
||||
// Process order refund
|
||||
//
|
||||
// @Router /v1/t/:tenantCode/creator/orders/:id<int>/refund [post]
|
||||
|
||||
45
backend/app/http/v1/dto/creator_audit.go
Normal file
45
backend/app/http/v1/dto/creator_audit.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package dto
|
||||
|
||||
import "quyun/v2/app/requests"
|
||||
|
||||
// CreatorAuditLogListFilter 创作者侧审计日志列表过滤条件。
|
||||
type CreatorAuditLogListFilter struct {
|
||||
// Pagination 分页参数(page/limit)。
|
||||
requests.Pagination
|
||||
// OperatorID 操作者用户ID,精确匹配。
|
||||
OperatorID *int64 `query:"operator_id"`
|
||||
// OperatorName 操作者用户名/昵称,模糊匹配。
|
||||
OperatorName *string `query:"operator_name"`
|
||||
// Action 动作标识,精确匹配。
|
||||
Action *string `query:"action"`
|
||||
// TargetID 目标ID,精确匹配。
|
||||
TargetID *string `query:"target_id"`
|
||||
// Keyword 详情关键词,模糊匹配。
|
||||
Keyword *string `query:"keyword"`
|
||||
// CreatedAtFrom 创建时间起始(RFC3339/2006-01-02)。
|
||||
CreatedAtFrom *string `query:"created_at_from"`
|
||||
// CreatedAtTo 创建时间结束(RFC3339/2006-01-02)。
|
||||
CreatedAtTo *string `query:"created_at_to"`
|
||||
// Asc 升序字段(id/created_at)。
|
||||
Asc *string `query:"asc"`
|
||||
// Desc 降序字段(id/created_at)。
|
||||
Desc *string `query:"desc"`
|
||||
}
|
||||
|
||||
// CreatorAuditLogItem 创作者侧审计日志条目。
|
||||
type CreatorAuditLogItem struct {
|
||||
// ID 审计日志ID。
|
||||
ID int64 `json:"id"`
|
||||
// OperatorID 操作者用户ID。
|
||||
OperatorID int64 `json:"operator_id"`
|
||||
// OperatorName 操作者用户名/昵称。
|
||||
OperatorName string `json:"operator_name"`
|
||||
// Action 动作标识。
|
||||
Action string `json:"action"`
|
||||
// TargetID 目标ID。
|
||||
TargetID string `json:"target_id"`
|
||||
// Detail 操作详情。
|
||||
Detail string `json:"detail"`
|
||||
// CreatedAt 创建时间(RFC3339)。
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
@@ -171,6 +171,11 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
r.creator.RemovePayoutAccount,
|
||||
QueryParam[int64]("id"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Get /v1/t/:tenantCode/creator/audit-logs -> creator.ListAuditLogs")
|
||||
router.Get("/v1/t/:tenantCode/creator/audit-logs"[len(r.Path()):], DataFunc1(
|
||||
r.creator.ListAuditLogs,
|
||||
Query[dto.CreatorAuditLogListFilter]("filter"),
|
||||
))
|
||||
r.log.Debugf("Registering route: Get /v1/t/:tenantCode/creator/contents -> creator.ListContents")
|
||||
router.Get("/v1/t/:tenantCode/creator/contents"[len(r.Path()):], DataFunc1(
|
||||
r.creator.ListContents,
|
||||
|
||||
Reference in New Issue
Block a user