# 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 } ```