# ticket-user
**Repository Path**: ZZX9599/ticket-user
## Basic Information
- **Project Name**: ticket-user
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-04-26
- **Last Updated**: 2024-04-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
票务管理系统,小杨 + 小周
重点说明1: 加注释、加注释、加注释
重点说明2: 不要使用 fmt 在控制台打印数据
重点说明3: 打印记得使用 glog.Info 打印日志
重点说明4: 请求的结构体和响应的结构体写在对应的 api 文件
重点说明5: 对应的代码实现写在对应的 service 文件
重点说明6: 自定义错误信息使用 gerror.New 创建错误对象
重点说明7: 数据库时间统一使用 created_at 和 updates_at
重点说明8: 数据库对应的结构体统一定义在 model 文件下
重点说明9: 列表查询统一继承 comm.PageReq
Directory Information
comm 目录:公共信息的配置 (代码常量、对接三方的 URL 等)
back 目录:代表票务管理后台系统
ticket 目录:代表代理商用户使用的购票页面 (暂时需求不明确)
Json 字段统一使用小驼峰命名风格【强制】
Mysql 字段统一使用英文的下划线风格【强制】
Swagger 任何的字段都必须加上 dc 描述信息【强制】
Swagger 字段如果是必须的,则必须添加 v:required 注释【强制】
Swagger 每个字段都必须包含 json 和 dc 字段【强制】
数据库的 ORM 操作统一使用 g.Model("表名") 来获取数据层对象【强制】
数据库的执行操作之前都使用 g.Try(ctx, 函数) 的形式来做错误的处理捕获【强制】
数据层的操作因为会涉及到真实的票务信息,会涉及到金额,所以必须使用事务【强制】
数据库事务则使用 GoFrame 封装的 Transaction 方法【强制】
为了排除风险则规定所有数据库操作全部使用事务 (最佳的做法是多表操作才使用)
示例如下,所有的代码 ORM 操作就按照这样来写,保证错误处理和准确性和事务的一致性【强制】
```go
// 查询用户列表
func (s *UserBackApi) QueryUserBack(ctx context.Context, req *QueryUserBackReq) (res *QueryUserBackRes, err error) {
// 响应结果对象
res = new(QueryUserBackRes)
// 获取数据层对象【强制写法】
model := g.Model("user_back")
// 开启错误全局处理【强制写法】
err = g.Try(ctx, func(ctx context.Context) {
// 使用 GoFrame 的事务处理机制防止多表处理的数据一致性问题【强制写法】
model.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
// 计算 offset
offset := (req.PageNum - 1) * req.PageSize
// 获取总记录数
total, err := model.Count()
if err != nil {
return err
}
// 查询数据库列表
var userBackList []*UserBack
err = model.Limit(offset, req.PageSize).Scan(&userBackList)
if err != nil {
return err
}
// 填充响应数据
res = &QueryUserBackRes{
PageNum: req.PageNum,
PageSize: req.PageSize,
Total: total,
UserBackList: userBackList,
}
return nil
})
})
return
}
```