dev stock stragety

This commit is contained in:
yanweidong
2026-01-26 17:38:06 +08:00
parent d2a3d60183
commit 7efdead5bf
20 changed files with 540 additions and 665 deletions

View File

@@ -0,0 +1,12 @@
package apps
import "github.com/gin-gonic/gin"
func Home(c *gin.Context) {
data := gin.H{
"Title": "Welcome to " + c.Request.Host,
"Message": "This is " + c.Request.Host + " index page.",
}
c.HTML(200, "apps-home.html", data)
}

View File

@@ -0,0 +1,17 @@
package apps
import "github.com/gin-gonic/gin"
var (
data = gin.H{
"Title": "重生之我在A股开超市",
}
)
func StockHome(c *gin.Context) {
c.HTML(200, "stock-home.html", data)
}
func StrategyBy(c *gin.Context) {
c.HTML(200, "strategy-by.html", data)
}

View File

@@ -0,0 +1,8 @@
package auth
import (
"github.com/gin-gonic/gin"
)
func Login(c *gin.Context) {
}

View File

@@ -0,0 +1,29 @@
package auth
import (
"git.apinb.com/bsm-sdk/core/infra"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
)
// 退出登录处理
func Logout(c *gin.Context) {
session := sessions.Default(c)
// 清除会话中的token
session.Delete("MgtSession")
// 设置会话立即过期
session.Options(sessions.Options{
MaxAge: -1, // 立即过期
Path: "/",
})
// 保存会话更改
if err := session.Save(); err != nil {
infra.Response.Error(c, err)
return
}
infra.Response.Success(c, "Logged out successfully")
}

View File

@@ -0,0 +1,14 @@
package auth
import (
"github.com/gin-gonic/gin"
)
func SignIn(c *gin.Context) {
data := gin.H{
"Title": "Welcome to " + c.Request.Host,
"Message": "This is " + c.Request.Host + " index page.",
}
c.HTML(200, "index.html", data)
}

View File

@@ -0,0 +1,45 @@
package middleware
import (
"log"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
)
var sessionID string
func CheckSession() gin.HandlerFunc {
return func(ctx *gin.Context) {
session := sessions.Default(ctx)
//ctx.Next()
//return
token := session.Get(sessionID)
log.Println("session:", sessionID, token)
// 未登录时重定向到登录页
if token == nil {
ctx.Redirect(301, "/sign-in")
return
}
// set simple var
ctx.Set("SESSION", token)
// validate session1.check cache 2.check database // TODO
ctx.Next()
}
}
func EnableCookieSession(name, key string) gin.HandlerFunc {
store := cookie.NewStore([]byte(name))
store.Options(sessions.Options{
Path: "/",
MaxAge: 86400, // 24小时
HttpOnly: true,
Secure: false, // 在使用HTTPS的生产环境中设置为true
})
sessionID = name
return sessions.Sessions(key, store)
}

View File

@@ -4,13 +4,32 @@ import (
"os"
"strings"
"git.apinb.com/senlinai/site/internal/logic"
"git.apinb.com/senlinai/cloud/internal/logic"
"git.apinb.com/senlinai/cloud/internal/logic/apps"
"git.apinb.com/senlinai/cloud/internal/logic/auth"
"github.com/gin-gonic/gin"
)
// Register public 注册路由
func RegistersPublic(engine *gin.Engine) {
engine.GET("/", logic.Index)
// 匿名访问接口
engine.GET("/sign-in", auth.SignIn) // 登录
engine.POST("/login", auth.Login)
engine.GET("/logout", auth.Logout) // 退出登录
registerCenter("apps", engine)
}
func registerCenter(v1_key string, engine *gin.Engine) {
center := engine.Group(v1_key)
// Session认证
// center.Use(middleware.CheckSession())
center.GET("/home", apps.Home) // 首页概况
}
func RegistersAll(engine *gin.Engine) {