fusenapi/model/gmodel/ldap_menus_logic.go
laodaming 1a2c9a8f49 fix
2023-11-15 16:32:07 +08:00

64 lines
1.9 KiB
Go

package gmodel
import "context"
// TODO: 使用model的属性做你想做的
func (m *LdapMenusModel) Create(ctx context.Context, data *LdapMenus) error {
return m.db.WithContext(ctx).Model(&LdapMenus{}).Create(&data).Error
}
func (m *LdapMenusModel) FindOne(ctx context.Context, id int64) (resp *LdapMenus, err error) {
err = m.db.WithContext(ctx).Model(&LdapMenus{}).Where("id= ? and status = ?", id, 1).Take(&resp).Error
return resp, err
}
func (m *LdapMenusModel) FindByPath(ctx context.Context, path string) (resp *LdapMenus, err error) {
err = m.db.WithContext(ctx).Model(&LdapMenus{}).Where("path= ? and status = ?", path, 1).Take(&resp).Error
return resp, err
}
func (m *LdapMenusModel) Update(ctx context.Context, id int64, data *LdapMenus) error {
return m.db.WithContext(ctx).Model(&LdapMenus{}).Where("id = ?", id).Updates(&data).Error
}
type GetMenuListByParamReq struct {
Ids []int64
Name string
Title string
Path string
Status *int64
ParentId *int64
Sort string
Page int
Limit int
}
func (m *LdapMenusModel) GetMenuListByParam(ctx context.Context, req GetMenuListByParamReq) (resp []LdapMenus, total int64, err error) {
db := m.db.WithContext(ctx).Model(&LdapMenus{})
if len(req.Ids) > 0 {
db = db.Where("id in(?)", req.Ids)
}
if req.Name != "" {
db = db.Where("name like ?", "%"+req.Name+"%")
}
if req.Title != "" {
db = db.Where("title like ?", "%"+req.Title+"%")
}
if req.Name != "" {
db = db.Where("path like ?", "%"+req.Path+"%")
}
if req.Status != nil {
db = db.Where("status = ?", req.Status)
}
if req.ParentId != nil {
db = db.Where("parent_id = ?", req.ParentId)
}
if req.Sort != "" {
db = db.Order(req.Sort)
}
if err = db.Count(&total).Error; err != nil {
return nil, 0, err
}
offset := (req.Page - 1) * req.Limit
err = db.Offset(offset).Limit(req.Limit).Find(&resp).Error
return resp, total, err
}