package auth import ( "errors" "zhiyuan/models" "zhiyuan/pkg/app" "zhiyuan/pkg/db" "zhiyuan/services/admin" "zhiyuan/services/form" ) var Auth models.Auth func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.Auth, error) { if page.PageNum > 0 && page.PageSize > 0 { where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize)) } return Auth.GetMulti(where, fields, retVal) } func Count(where map[string]interface{}) (int64, error) { return db.Count(Auth.TableName(), where) } func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.Auth, error) { return Auth.GetOne(where, fields, retVal) } func GetInfoByID(id int) (*models.Auth, error) { return GetOne(map[string]interface{}{"id": id}, nil, nil) } func Add(form form.AuthAdd) (int64, error) { if CheckAuthDuplicate(form.Auth) { return 0, errors.New("auth already exists") } authMap := map[string]interface{}{ "name": form.Name, "auth": form.Auth, "pid": form.Pid, } authID, err := db.InsertOne(Auth.TableName(), authMap) if err != nil { return 0, nil } admin.ClearAuthAll() return authID, nil } func EditByID(form form.AuthAdd, id int) error { authInfo, err := GetInfoByID(id) if authInfo == nil { return errors.New("invalid auth id") } if authInfo.Auth != form.Auth && CheckAuthDuplicate(form.Auth) { return errors.New("auth already exists") } authMap := map[string]interface{}{ "name": form.Name, "auth": form.Auth, "pid": form.Pid, } _, err = db.Update(Auth.TableName(), map[string]interface{}{"id": id}, authMap) admin.ClearAuthAll() return err } func CheckAuthDuplicate(auth string) bool { authInfo, err := GetOne(map[string]interface{}{"auth": auth}, nil, nil) return authInfo != nil && err == nil } func DeleteByID(id int) error { authInfo, _ := GetInfoByID(id) if authInfo == nil { return errors.New("invalid auth id") } _, err := db.Delete(Auth.TableName(), map[string]interface{}{"id": id}) return err }