golang对两个不同的结构体相同的操作是否可封装成一个公共的方法

新手上路,请多包涵
// Schema 方案
type Schema struct{}

//  删除方案
func (a *Schema) SchemaDel(c *gin.Context) {
    var req schema.IDSReq
    if ginx.HandleError(c, ginx.ParseJSON(c, &req)) {
        return
    }
    ids := strings.Split(req.IDS, ",")
    if len(ids) == 0 {
        ginx.ErrorRes(c, "请至少选择一条记录")
        return
    }
    var list []*models.Scheme
    _, err := db.GetList(nil, false, &models.Scheme{}, &list, gin.H{"id in ?": ids}, nil, "", &ginx.PageParam{
        OnlyPage: true,
        PageSize: -1,
    }, "ID", "BranchID")
    if ginx.HandleError(c, err) {
        return
    }
    for _, v := range list {
        // 验证权限
        if ginx.HandleError(c, checkBranchRole(c, v.BranchID)) {
            return
        }
        if v.IsDel == 0 {
            v.IsDel = 1
            if ginx.HandleError(c, db.Update(nil, v, "IsDel")) {
                return
            }
        }
    }
    ginx.SuccessRes(c, "操作成功")
}
// Tag 标签
type Tag struct{}

// 删除标签
func (a *Tag) TagDel(c *gin.Context) {
    var req schema.IDSReq
    if ginx.HandleError(c, ginx.ParseJSON(c, &req)) {
        return
    }
    ids := strings.Split(req.IDS, ",")
    if len(ids) == 0 {
        ginx.ErrorRes(c, "请至少选择一条记录")
        return
    }
    var list []*models.Tag
    _, err := db.GetList(nil, false, &models.Tag{}, &list, gin.H{"id in ?": ids}, nil, "", &ginx.PageParam{
        OnlyPage: true,
        PageSize: -1,
    }, "ID", "BranchID")
    if ginx.HandleError(c, err) {
        return
    }
    for _, v := range list {
        // 验证权限
        if ginx.HandleError(c, checkBranchRole(c, v.BranchID)) {
            return
        }
        if v.IsDel == 0 {
            v.IsDel = 1
            if ginx.HandleError(c, db.Update(nil, v, "IsDel")) {
                return
            }
        }
    }
    ginx.SuccessRes(c, "操作成功")
}
阅读 2.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题