Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+192
View File
@@ -0,0 +1,192 @@
package router
import (
"91porn-server/web/middleware/limitHandler"
"fmt"
"net/http"
"runtime/debug"
"91porn-server/common"
"91porn-server/common/constant"
"91porn-server/common/tg"
"91porn-server/middleware/cors"
"91porn-server/middleware/ginzap"
"91porn-server/middleware/ip"
"91porn-server/web/middleware/authweb"
"91porn-server/web/middleware/checkPermission"
"91porn-server/web/service/certificateser"
"91porn-server/web/webg"
"github.com/gin-contrib/pprof"
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
// SetupGin 初始化gin router
func SetupGin() *gin.Engine {
gin.SetMode(gin.DebugMode)
if webg.Conf.Base.Env == constant.ProdEnv {
gin.SetMode(gin.ReleaseMode)
}
router := gin.New()
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
if webg.Conf.Base.PProf {
pprof.Register(router) // 性能分析工具
}
router.ForwardedByClientIP = true
router.Use(ip.RealIP)
router.Use(
ginzap.Logger([]string{constant.CtxAdminAct, constant.CtxIP}),
ginzap.Recovery(true, func(err interface{}) {
stack := string(debug.Stack())
common.Go(func() {
_ = webg.Bot.Send(tg.Msg{ChatId: tg.ChatIdServerTeam, Text: fmt.Sprintf("[Web-Server] panic:%+v stack:%s", err, stack)})
})
}))
router.Use(cors.Cors(&cors.Options{
Origin: nil, // "*"
Methods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodHead, http.MethodDelete},
AllowedHeaders: []string{"Content-Length", "Content-Type", "Authorization"},
ExposedHeaders: []string{"Content-Disposition", "Refresh-Authorization"},
OptionsSuccessStatus: http.StatusOK,
}))
router.HandleMethodNotAllowed = true
router.NoMethod(func(c *gin.Context) {
c.JSON(http.StatusMethodNotAllowed, gin.H{"result": false, "error": "Method Not Allowed"})
})
router.NoRoute(func(c *gin.Context) {
c.JSON(http.StatusNotFound, gin.H{"result": false, "error": "Endpoint Not Found"})
})
registerRouter(router)
return router
}
func registerRouter(router *gin.Engine) {
//root Router 根组
rootRouter := router.Group("/api/web",
authweb.Auth,
checkPermission.CheckPermission,
limitHandler.LoginLimit,
)
{
//web后台管理
admin := rootRouter.Group("/admin")
{
newActivityRoute(admin)
productRouter(admin)
paymentGuideRouter(admin)
sceneBannerRouter(admin)
vipCardExperimentRouter(admin)
productBenefitRouter(admin)
tagRouter(admin)
updownloadRouter(admin)
locationRoute(admin)
toneRoute(admin)
vidRouter(admin)
imageTopRouter(admin)
adsRouter(admin)
logRouter(admin)
annouRouter(admin)
userRouter(admin)
versionRouter(admin)
adminRouter(admin)
authorRouter(admin)
exportRouter(admin)
activityRouter(admin)
withdrawRouter(admin)
rechargeRouter(admin)
sourceRouter(admin)
proxyRouter(admin)
promoteUrlRouter(admin)
syncCdnRouter(admin)
filterRouter(admin)
ipblockRouter(admin)
ipwhiteRouter(admin)
infmtRoute(admin)
exchangeCodeRouter(admin)
chatRobotRouter(admin)
daichongRouter(admin)
goldCfgRouter(admin)
extendRouter(admin)
freeVidCfgRouter(admin)
ldyRouter(admin)
fictionRouter(admin)
taskRouter(admin)
currencyRouter(admin)
moduleConfRouter(admin)
operationLogRouter(admin)
videoActivityRouter(admin)
activeRouter(admin)
rejectTemp(admin)
aiUndressRouter(admin)
integralConfigRouter(admin)
officialRouter(admin)
commentRouter(admin)
statRouter(admin)
aiChangeFaceRouter(admin)
videoGoldCoinRouter(admin)
advanceOrderRouter(admin)
advanceConfigRouter(admin)
userBackpackRouter(admin)
integralExchangeRouter(admin)
quickSearchRouter(admin)
aiMateRouter(admin)
aiMateV2Router(admin)
sysConfRouter(admin)
bannerJumpRouter(admin)
mediaRouter(admin)
mediaContentRouter(admin)
mediaTagRouter(admin)
mediaTagDimensionRouter(admin)
jingangRouter(admin)
imGroupRouter(admin)
imGroupMemberRouter(admin)
imMessageRouter(admin)
nakedChatRouter(admin)
nakedChatOrderRouter(admin)
aiTextToImageRouter(admin)
aiImageToVideoRouter(admin)
aiTemplateModuleRouter(admin)
aiPlazaRouter(admin)
aiModRouter(admin)
aiTextToNovelRouter(admin)
laosijiRouter(admin)
adGroupRouter(admin)
checkinRouter(admin)
sensitiveWordRouter(admin)
newOfficialWebsiteRoute(admin)
contentReviewRouter(admin)
imRouter(admin)
}
}
// openclaw still 接口
openclawRouter := router.Group("/customer")
{
commentAgentRouter(openclawRouter)
}
ext := router.Group("/ext") //对H5接口的
{
certificate := ext.Group("certificate")
{
certificate.POST("/qr", certificateser.QrCode)
}
}
thirdRouter := router.Group("/3rd")
{
defrayRouter(thirdRouter)
daichongCallBackRouter(thirdRouter)
addWelfareBackRouter(thirdRouter)
}
//代充接口 测试时环境 如此配置 ,生产环境 移动到group下
daichongRouter := router.Group("/")
{
daichongCallBackRouter(daichongRouter)
}
//数据同步,内部数据中心
syncDataRouter := router.Group("/services")
{
syncRouter(syncDataRouter)
}
}