70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
commonHttp "video-factory/common/http"
|
|
"video-factory/shortdrama/controller"
|
|
"video-factory/shortdrama/service"
|
|
|
|
"github.com/gogf/gf/v2/util/gvalid"
|
|
|
|
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
|
)
|
|
|
|
func init() {
|
|
gvalid.RegisterRule("password-complex", func(ctx context.Context, input gvalid.RuleFuncInput) error {
|
|
pwd := input.Value.String()
|
|
var hasUpper, hasLower, hasDigit, hasSpecial bool
|
|
for _, c := range pwd {
|
|
switch {
|
|
case c >= 'A' && c <= 'Z':
|
|
hasUpper = true
|
|
case c >= 'a' && c <= 'z':
|
|
hasLower = true
|
|
case c >= '0' && c <= '9':
|
|
hasDigit = true
|
|
default:
|
|
hasSpecial = true
|
|
}
|
|
}
|
|
if !hasUpper {
|
|
return errors.New("密码必须包含大写字母")
|
|
}
|
|
if !hasLower {
|
|
return errors.New("密码必须包含小写字母")
|
|
}
|
|
if !hasDigit {
|
|
return errors.New("密码必须包含数字")
|
|
}
|
|
if !hasSpecial {
|
|
return errors.New("密码必须包含特殊符号")
|
|
}
|
|
return nil
|
|
})
|
|
}
|
|
|
|
func main() {
|
|
// ==================== API 路由(通过 RouteRegister 自动注册,遵循 ai-agent 规范) ====================
|
|
commonHttp.RouteRegister([]interface{}{
|
|
controller.Drama,
|
|
controller.Config,
|
|
controller.Auth,
|
|
controller.AgentTier,
|
|
controller.Agent,
|
|
controller.Customer,
|
|
controller.Transaction,
|
|
controller.Payment,
|
|
})
|
|
|
|
// ==================== 静态文件服务(workspace 目录) ====================
|
|
commonHttp.Httpserver.AddStaticPath("/workspace", "workspace")
|
|
|
|
// 启动时恢复未完成的视频生成轮询
|
|
service.DramaService.StartVideoPoller(context.Background())
|
|
|
|
// 保持运行
|
|
select {}
|
|
}
|