qa.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package aftersale
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/services/form"
  8. )
  9. var ASQa models.ASQa
  10. func GetQaList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.ASQa, error) {
  11. if page.PageNum > 0 && page.PageSize > 0 {
  12. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  13. }
  14. return ASQa.GetMulti(where, fields, retVal)
  15. }
  16. func CountQa(where map[string]interface{}) (int64, error) {
  17. return db.Count(ASQa.TableName(), where)
  18. }
  19. func GetQaOne(where map[string]interface{}, fields []string, dest interface{}) (*models.ASQa, error) {
  20. return ASQa.GetOne(where, fields, dest)
  21. }
  22. func AddQa(form form.ASQaAdd) (int64, error) {
  23. qaMap := map[string]interface{}{
  24. "title": form.Title,
  25. "content": form.Content,
  26. }
  27. return db.InsertOne(ASQa.TableName(), qaMap)
  28. }
  29. func EditQa(form form.ASQaAdd, id int) (int64, error) {
  30. qaInfo, _ := GetQaOne(map[string]interface{}{"id": id}, nil, nil)
  31. if qaInfo.Title != form.Title && CheckQaDuplicate(form.Title) {
  32. return 0, errors.New("类别已存在")
  33. }
  34. qaMap := map[string]interface{}{
  35. "title": form.Title,
  36. "content": form.Content,
  37. }
  38. return db.Update(ASQa.TableName(), map[string]interface{}{"id": id}, qaMap)
  39. }
  40. func CheckQaDuplicate(name string) bool {
  41. typeInfo, err := GetQaOne(map[string]interface{}{"title": name}, nil, nil)
  42. return typeInfo != nil && err == nil
  43. }
  44. func DelQa(id int) (int64, error) {
  45. return db.DeleteSoft(ASQa.TableName(), map[string]interface{}{"id": id})
  46. }