auth.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package auth
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/services/admin"
  8. "zhiyuan/services/form"
  9. )
  10. var Auth models.Auth
  11. func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.Auth, error) {
  12. if page.PageNum > 0 && page.PageSize > 0 {
  13. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  14. }
  15. return Auth.GetMulti(where, fields, retVal)
  16. }
  17. func Count(where map[string]interface{}) (int64, error) {
  18. return db.Count(Auth.TableName(), where)
  19. }
  20. func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.Auth, error) {
  21. return Auth.GetOne(where, fields, retVal)
  22. }
  23. func GetInfoByID(id int) (*models.Auth, error) {
  24. return GetOne(map[string]interface{}{"id": id}, nil, nil)
  25. }
  26. func Add(form form.AuthAdd) (int64, error) {
  27. if CheckAuthDuplicate(form.Auth) {
  28. return 0, errors.New("auth already exists")
  29. }
  30. authMap := map[string]interface{}{
  31. "name": form.Name,
  32. "auth": form.Auth,
  33. "pid": form.Pid,
  34. }
  35. authID, err := db.InsertOne(Auth.TableName(), authMap)
  36. if err != nil {
  37. return 0, nil
  38. }
  39. admin.ClearAuthAll()
  40. return authID, nil
  41. }
  42. func EditByID(form form.AuthAdd, id int) error {
  43. authInfo, err := GetInfoByID(id)
  44. if authInfo == nil {
  45. return errors.New("invalid auth id")
  46. }
  47. if authInfo.Auth != form.Auth && CheckAuthDuplicate(form.Auth) {
  48. return errors.New("auth already exists")
  49. }
  50. authMap := map[string]interface{}{
  51. "name": form.Name,
  52. "auth": form.Auth,
  53. "pid": form.Pid,
  54. }
  55. _, err = db.Update(Auth.TableName(), map[string]interface{}{"id": id}, authMap)
  56. admin.ClearAuthAll()
  57. return err
  58. }
  59. func CheckAuthDuplicate(auth string) bool {
  60. authInfo, err := GetOne(map[string]interface{}{"auth": auth}, nil, nil)
  61. return authInfo != nil && err == nil
  62. }
  63. func DeleteByID(id int) error {
  64. authInfo, _ := GetInfoByID(id)
  65. if authInfo == nil {
  66. return errors.New("invalid auth id")
  67. }
  68. _, err := db.Delete(Auth.TableName(), map[string]interface{}{"id": id})
  69. return err
  70. }