|
|
|
@ -0,0 +1,116 @@ |
|
|
|
## 技术方面 |
|
|
|
|
|
|
|
### 打包指令 |
|
|
|
|
|
|
|
配置: |
|
|
|
|
|
|
|
```yaml |
|
|
|
gfcli: |
|
|
|
build: |
|
|
|
name: "" |
|
|
|
arch: "amd64" # 配置CPU架构 |
|
|
|
system: "linux,darwin,windows" # 配置操作系统 |
|
|
|
mod: "" #GoModules编译模式,默认留空 |
|
|
|
cgo:0 # 是否允许调用C代码,0禁用1启用 |
|
|
|
packSrc: "manifest,resource" # 指定一起打包的静态资源路径 |
|
|
|
``` |
|
|
|
|
|
|
|
命令: gf build |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Bcrypt加密 |
|
|
|
|
|
|
|
```go |
|
|
|
//加密: |
|
|
|
bcrypt.GenerateFromPassword([]byte("要加密的内容"),int 加密次数2^int次) |
|
|
|
|
|
|
|
//验证: |
|
|
|
err:=bcrypt.CompareHashAndPassword(hash,password) |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### JWT |
|
|
|
|
|
|
|
#### golang-jwt |
|
|
|
|
|
|
|
```go |
|
|
|
//1.定义结构体 |
|
|
|
type MyClaims struct{ |
|
|
|
ID uint |
|
|
|
Username string |
|
|
|
jwt.RegisteredClaims |
|
|
|
} |
|
|
|
|
|
|
|
//2.签发 |
|
|
|
claims:=MyClaims{ |
|
|
|
.... |
|
|
|
RegisteredClaims: jwt.RegisteredClaims{ |
|
|
|
设置token参数,如过期时间等 |
|
|
|
} |
|
|
|
} |
|
|
|
token:=jwt.NewWithClaims(jwt.SigningMethodHS256,claims) |
|
|
|
token =token.SignedString([]byte(密钥)) |
|
|
|
|
|
|
|
//3.验签 |
|
|
|
token,err:= jwt.ParseWithClaims(tokenString, &model.MyClaim{}, func(token *jwt.Token) (interface{}, error) { |
|
|
|
_, ok := token.Method.(*jwt.SigningMethodHMAC) //验证加密方式 |
|
|
|
if !ok { |
|
|
|
return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) |
|
|
|
} |
|
|
|
return []byte(密钥), nil |
|
|
|
}) |
|
|
|
if err!=nil {return nil,err} |
|
|
|
|
|
|
|
if claims,ok:=token.Claims.(*MyClaims);ok&&token.Valid{ |
|
|
|
return claims,nil |
|
|
|
} |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
#### gf-jwt |
|
|
|
|
|
|
|
gf-jwt是以中间件的形式管理token |
|
|
|
|
|
|
|
```go |
|
|
|
//1.初始化中间件 |
|
|
|
var Auth:=&gfjwt.GFJWTMiddleware{ |
|
|
|
Realm:"name", |
|
|
|
Key:[]byte(密钥), |
|
|
|
Timeout:过期时间, |
|
|
|
MaxRefresh: token刷新窗口期 |
|
|
|
IdentityKey: "id" //payload中标识身份的key |
|
|
|
Authenticator:func(r *ghttp.Request)(interface{},error)//回调函数,处理登录验签逻辑 |
|
|
|
} |
|
|
|
//2.注册中间件 |
|
|
|
//3.从token中获取数据 |
|
|
|
_,data:=Auth.GetIdentity(g.RequestFromCtx(ctx)) |
|
|
|
userId:=gconv.Uint64(data(g.Map)["id"]) |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 夺宝奇兵功能 |
|
|
|
|
|
|
|
### 机构动向 |
|
|
|
|
|
|
|
#### --股票估值-- |
|
|
|
|
|
|
|
显示股票当前或上一次收盘的基本信息 |
|
|
|
|
|
|
|
### --当日资金-- |
|
|
|
|
|
|
|
分析资金流入流出方向,列出了主力资金状况、主力吸筹有无、庄散对决情况 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### AI 预测大模型--股价预测 |
|
|
|
|
|
|
|
展示7项数据:现价、卖出价、买回价,预测高一高二、低一低二 |
|
|
|
|
|
|
|
展示K线图 |
|
|
|
|
|
|
|
功能亮点介绍 |