mirror of
https://github.com/flipped-aurora/gin-vue-admin.git
synced 2026-09-30 07:46:10 +00:00
* feat: 调整AI工作模式,更符合harness基准 * feat: 添加BusinessDB字段到PluginInitializeGorm结构体,并增加相关测试用例 * [middleware/jwt.go]: fix #2192 issues bug * docs: add auto plugin design spec * chore: ignore worktrees directory * feat: 调整代码辅助能力至插件 * feat: 添加警告条组件,提示授权用户访问限制 * fix: 修正商业用途版权声明链接 * feat: 调整agent.md 更加节省token * fix: 修改casbin版本为v3 * feat: 更新JSONMap和JSONSlice类型,优化GORM数据类型处理 * feat: 添加数据库就绪通知机制,优化插件注册流程 * feat: 重构API路径和描述,优化代码生成器和模板配置分组 * feat: 优化 person 页面的 css 作用域限制 * feat: 更新 vite 至 vite8 * 新增:MCP工具为指定URL的角色ID授权 * fix: 增加文件名合法性检查,拒绝包含非法字符的文件写入 * chore: 更新CI配置,升级Node.js和Go版本,调整checkout和setup动作版本 * feat: 为数据库连接增加最大复用时间配置 * feat: 为各数据库连接配置增加最大连接生命周期设置 * feat: 更新插件注册逻辑并优化API和菜单组件的标签显示 * feat: 更新版本号至v2.9.2并添加新插件路径信息 --------- Co-authored-by: taincheng <zhangtc@gmail.com> Co-authored-by: Azir-11 <2075125282@qq.com> Co-authored-by: lanxi <1220lanxi@gmail.com>
1.7 KiB
1.7 KiB
Service 示例
这个文件负责什么
Service 层负责业务逻辑、数据库查询、事务控制和数据拼装,不负责 HTTP 参数绑定和响应输出。
什么时候应该这样写
- 新增列表查询、创建、更新、删除逻辑
- 需要事务操作
- 需要对 model 和 request 做转换
推荐写法示例
package system
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
)
type OrderService struct{}
func (s *OrderService) GetOrderList(info systemReq.OrderSearch) (list []system.Order, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
db := global.GVA_DB.Model(&system.Order{})
if info.Name != "" {
db = db.Where("name LIKE ?", "%"+info.Name+"%")
}
if info.Status != nil {
db = db.Where("status = ?", *info.Status)
}
err = db.Count(&total).Error
if err != nil {
return nil, 0, err
}
err = db.Limit(limit).Offset(offset).Order("id desc").Find(&list).Error
return list, total, err
}
为什么这样写
- 只返回业务结果和
error,便于 API 层统一处理 - 直接使用
global.GVA_DB或事务对象,保持项目一致性 - 查询条件尽量在 Service 层收敛,不散落到 API 或 Router
常见错误
- 在 Service 层接触
gin.Context - 在 Service 层直接拼
response.OkWith... - 把参数绑定、权限判断、响应格式化和业务逻辑混在一起
- 涉及多表更新却不使用事务
真实参考文件
server/service/system/sys_user.goserver/service/example/exa_customer.go