2.7 KiB
2.7 KiB
validator
包验证器,可以用于验证参数是否符合规则,比如下方的比较验证,还有其他可以查看网址的详细介绍 go-zero自带的有校验器,可以使用
| Tag | Description |
|---|---|
| eq | Equals |
| gt | Greater than |
| gte | Greater than or equal |
| lt | Less Than |
| lte | Less Than or Equal |
| ne | Not Equal |
goverter
类型转换器,可以用于类型的转换,比如下面的代码
func (l *CreatePopupLogic) CreatePopup(in *backgroundrpcmodel.ResPopup) (*backgroundrpcmodel.ResResult, error) {
_, err := l.svcCtx.PopupModel.Insert(l.ctx, u.Convert.SysPopupR2S(in.Info))
if err != nil {
return nil, rerr.NewFromSQL(err)
}
return &backgroundrpcmodel.ResResult{
Result: true,
}, nil
}
使用
goverter gen .
asynq
-
入队流程
payload := &jobtype.xxxPayload{} payloadByte, err := jsoniter.Marshal(payload) if err != nil { logt.Error("xxx jsoniter.Marshal err:", err) return nil, zerr.New(rescode.DataFormatConversionError) } _, err = l.svcCtx.AsynqClient.Enqueue(asynq.NewTask(jobtype.xxx, payloadBytes, asynq.Queue(consts.QueueLow))) if err != nil { logt.Error("xxx enqueue err:", err) return nil, zerr.New(rescode.EnqueueErr) } -
自行定义了队列优先级,在入队的时候可以加参数进行选择
consts.QueueCritical: 6, consts.QueueDefault: 3, consts.QueueLow: 1, -
处理前流程(反序列化,获取数据)
var payload jobtype.xxx err := json.Unmarshal(task.Payload(), &payload) if err != nil { logt.Error("xxx unmarshal payload err:", err) return zerr.New(rescode.DataFormatConversionError) }
gorm
使用gorm + sqlx,但是复用sql连接
func NewServiceContext(c config.Config) *ServiceContext {
logx.Infof("Cache config: %+v", c.CacheRedis)
gormDB, err := gorm.Open(postgres.Open(c.Database.DataSource), &gorm.Config{})
if err != nil {
msg := fmt.Sprintf("连接数据库失败 %s ", err.Error())
logx.Error(msg)
panic(msg)
}
sqlDB, err := gormDB.DB()
if err != nil {
msg := fmt.Sprintf("获取底层连接失败: %s", err.Error())
logx.Error(msg)
panic(msg)
}
sqlxConn := sqlx.NewSqlConnFromDB(sqlDB)
return &ServiceContext{
Config: c,
UserAuthModel: models.NewUserAuthModel(sqlxConn, c.CacheRedis, gormDB),
}
}