- 重构后端与前端,全程大白话注释(不懂程序也能看懂) - 移动阶段改为全局并行(MoveAll,工人数=CPU核心数) - 去掉记录每个文件搬去哪了(删除去向回填,解决写库卡顿) - 去掉重复文件标记与统计:重复判定改为 MD5+路径都相同才算,重复则原地忽略不移动;MD5 相同但路径不同仍照常搬 - 媒体库去掉归类目录列,看板去掉重复/归类分布统计
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
// Package api 是程序的"门面"——所有网页请求都先到这里,再转给背后的服务。
|
|
//
|
|
// 大白话理解:这是前台接待处。页面上的每个按钮、每次查询,
|
|
// 都会变成一个"请求"发到这里;这里分发给对应的办事窗口(controller),
|
|
// 办完再用统一的格式回话。
|
|
package api
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Response 所有接口的统一回话格式:
|
|
// - code:成功 200,出错 400/500
|
|
// - message:一句话说明(成功就是 success,出错就是原因)
|
|
// - data:真正要返回的数据
|
|
type Response struct {
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
// Success 返回成功回话(code=200)。
|
|
func Success(c *gin.Context, data interface{}) {
|
|
c.JSON(http.StatusOK, Response{
|
|
Code: http.StatusOK,
|
|
Message: "success",
|
|
Data: data,
|
|
})
|
|
}
|
|
|
|
// Error 返回失败回话。statusCode 只允许 400(参数不对)/ 500(服务器出错)。
|
|
func Error(c *gin.Context, statusCode int, message string) {
|
|
c.JSON(statusCode, Response{
|
|
Code: statusCode,
|
|
Message: message,
|
|
Data: nil,
|
|
})
|
|
}
|
|
|
|
// PageResult 分页列表的统一格式:list 是这一页的数据,total 是总条数。
|
|
type PageResult struct {
|
|
List []interface{} `json:"list"`
|
|
Total int64 `json:"total"`
|
|
}
|