由于系统内有部分库在Gitee(码云)内,要正常使用,请在系统环境变量中添加
变量:GOPRIVATE 值:gitee.com,*.gitee.com
【必须安装】
go get -u github.com/google/wire/cmd/wire
go get -u github.com/ungerik/pkgreflect
go get -u github.com/go-bindata/go-bindata/...
go get -u github.com/swaggo/swag/cmd/swag
gen tpl
gen model [model_name]
model_name:模块名称,注意大小写,建议大驼峰方式命名
由于框架采用bindata库将静态资源打包到了应用中,请在发布前一定要执行一次以下命令,否则会在生产环境运行出错!
gen asset
按swagger规范要求,在controllers中做好相关方法的注释,然后使用以下命令进行初始化
gen swag
在字段tag中用omitempty关键字进行标记,即可当此字段为“0值”时不序列化,例如:
gorm:"foreignkey:ParentId;association_foreignkey:Id" json:"children,omitempty"
####json序列化和反序列化时忽略某个字段
在字段tag中用json:"-"即可,例如:
gorm:"foreignkey:ParentId;association_foreignkey:Id" json:"-"
json:"fieldName"
表明该字段在被序列化成json格式时的key名称,fieldName需要自行替换,通常跟字段名一致(小驼峰命名法,例如:userName)
gorm:"..."
gorm所用标签,请查阅官网教程 https://gorm.io/docs/models.html
如果某个字段是gorm的关联对象(例如一对一、一对多、多对多),那么不建议将此标签设置成跟字段名一样,因为这样会造成页面添加和修改时由于无法正确解析关联字段对象而报错,建议在字段名前面加"_",例如”_userName",这样就可以避免出错啦。例子如下:
type StoreItem struct {
Id string `gorm:"size:36;primary_key" json:"id"`
StoreId string `gorm:"size:36" json:"storeId"`
Store *Store `json:"store"`
BoxTypeId string `gorm:"size:36" json:"boxTypeId"`
BoxType *BoxType `json:"boxType"`
RemainCount int `gorm:"default:0" json:"remainCount" caption:"库存数量"`
CreateTime time.Time `json:"createTime"`
}
在go中如果直接使用time.Parse
进行时间解析,解析出来的将会是UTC制式,而通常我们用来获取当前时间的time.now()
返回的时间是当前系统设置的时区时间,如果直接用这两个时间做对比,将会有8小时误差!!!
解决方案:
请使用time.ParseInLocation("2006-01-02 15:04:05", timeString, time.Local)
进行时间解析