# 技术部分 ### 手动编写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 实现单例初始化服务接口 ### 模板输出 1. req.Response.Writef() //其实就是write套了层Sprintf 2. req.Response.WriteTplContent(string,g.Map{}) //此法是在string中预留{{}}占位符,用g.Map中的value替换占位符 3. req.Response.WriteTpl(path string, g.Map{}) //此法与上一个区别是第一个参数是HTML文件路径,在文件路径中可以预留占位符进行替换,形式类似于JSP或Thymeleaf 4. 模板中的流程控制语句: 条件判断 {{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线图,并总结趋势 #### 庄家成本 显示筹码模型,根据筹码模型分析陈本价格 #### 情绪价值 对该支股票进行简短的总结陈述