4.0 KiB
技术部分
手动编写SQL的方法:
g.DB().Query(ctx,sql,g.Array{}) //查询sql g.DB().Exec(ctx,sql,g.Array{}) //修改的sql
Dao代码生成
config 中需要配置: gfcli: gen: dao: link: tables: 执行gf gen dao命令 //即逆向工程 或直接执行gf gen dao -l "link" -t "tables" 可不用改配置
生成代码: entity包 数据库表对应结构体 do包 经过包装的结构体,与entity区别是普通字段类型为interface{}而不是基本类型,可用来区分空值和空指针 dao包 直接隶属dao包的go文件写自定义业务代码,隶属于internal包的go文件用来存储框架预设代码(再次执行gen命令会被覆盖)
级联查询
一对一关系
结构体中添加字段: Struct *Struct orm:"with:id=s_id" //标签指定关联规则
查询时使用model.With(entity.Struct{})设置级联的表
一对多关系
结构体中添加字段: Structs []*Struct orm:"with:id=s_id" //标签指定关联规则
多级级联
直接在With()中添加多个结构体就行
Service和Logic层
根据logic包生成service接口:gf gen service
service
组成部分: 接口 type IExample interface{ //命名以I开头 定义业务函数 }
定义接口变量 var localExample() IExample //私有化防止外部修改
定义获取接口方法 func Example () IExample{ if localExample==nil{ panic(".....") } return localExample }
定义注册方法 func RegisterExample(i IExample){ localExample=i //用接口实现给接口变量赋值 }
Logic层
定义结构体 type sExample struct{} //以s开头命名
初始化方法中注册 func init(){ service.RegisterExample(&sExample{}) }
实现service的接口中的业务方法
初始化接口
在logic.go中统一import logic,然后再在main.go 中import一次logic.go 实现单例初始化服务接口
模板输出
- req.Response.Writef() //其实就是write套了层Sprintf
- req.Response.WriteTplContent(string,g.Map{}) //此法是在string中预留{{}}占位符,用g.Map中的value替换占位符
- req.Response.WriteTpl(path string, g.Map{}) //此法与上一个区别是第一个参数是HTML文件路径,在文件路径中可以预留占位符进行替换,形式类似于JSP或Thymeleaf
- 模板中的流程控制语句: 条件判断 {{if [compare] variable1 variable2}} {{else}} {{end}} 循环遍历切片 {{range.slice}} {{end}} 循环遍历map {{range $key,$value := .map}} {{end}}
文件上传
file:=req.GetUploadFile("name")
规范路由写法:
属性: File *ghttp.UploadFile p:"name"
全局配置文件大小限制:
config文件中
server:
clientMaxBodySize: ""
局部配置文件大小限制: 标签:v:"max-size: xxx MB"
文件下载
req.Response.ServerFile("/path") // 图片会显示在前端而不主动下载 req.Response.ServerFileDownload("/path","name") //无论是不是图片都会立刻开始下载
Cookie和Session
req.Cookie.Set("key","value") req.Cookie.SetCookie// 有多项设置,自由度较高 req.Cookie.Remove("key") //移除cookie req.Session.Set("key","value") req.Session.Remove("key")
时间工具
gtime.Now() Date() DateTime() New() Format() TimeStamp()....
随机工具
grand.Intn() grand.N() grand.S() grand.Letters().....
中间件
固定签名格式: func 函数名 (r *ghttp.Request){ 前置中间件业务逻辑 r.Middleware.Next() 后置中间件业务逻辑 } 挂载方法: 1.全局中间件 2.分组路由中间件
业务部分
超级云脑-云脑探秘 功能总结
首先是可以根据股票代码或名称搜索股票
股票估值
搜索出具体的股票后,显示当前股票估值和上一收盘日的基本情况
安全级别
显示六色罗盘,分析支撑和压力情况,据此显示风险分级
压力支撑
显示支撑位和压力位,根据支撑压力数据显示简短的总结
趋势研判
显示K线图,并总结趋势
庄家成本
显示筹码模型,根据筹码模型分析陈本价格
情绪价值
对该支股票进行简短的总结陈述