worknode.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package worknode
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/services/form"
  8. )
  9. var WorkNode models.WorkNode
  10. func Add(form form.WorkNodeAdd) (int64, error) {
  11. if CheckWorkNodeDuplicate(form.Name) {
  12. return 0, errors.New("节点已存在")
  13. }
  14. workNodeMap := map[string]interface{}{
  15. "`name`": form.Name,
  16. "`color`": form.Color,
  17. "`logo`": form.Logo,
  18. "`work_type_id`": form.WorkTypeId,
  19. "`designer_presence`": form.DesignerPresence,
  20. "`quality_accept`": form.QualityAccept,
  21. "`state`": form.State,
  22. }
  23. workNodeID, err := db.InsertOne(WorkNode.TableName(), workNodeMap)
  24. if err != nil {
  25. return 0, nil
  26. }
  27. return workNodeID, nil
  28. }
  29. func EditByID(form form.WorkNodeAdd, id int) error {
  30. info, err := GetInfoByID(id, nil, nil)
  31. if info == nil {
  32. return errors.New("invalid id")
  33. }
  34. if info.Name != form.Name && CheckWorkNodeDuplicate(form.Name) {
  35. return errors.New("节点已存在")
  36. }
  37. workNodeMap := map[string]interface{}{
  38. "`name`": form.Name,
  39. "`color`": form.Color,
  40. "`logo`": form.Logo,
  41. "`work_type_id`": form.WorkTypeId,
  42. "`designer_presence`": form.DesignerPresence,
  43. "`quality_accept`": form.QualityAccept,
  44. "`state`": form.State,
  45. }
  46. _, err = db.Update(WorkNode.TableName(), map[string]interface{}{"id": id}, workNodeMap)
  47. return err
  48. }
  49. func DeleteByID(id int) error {
  50. info, _ := GetInfoByID(id, nil, nil)
  51. if info == nil {
  52. return errors.New("invalid id")
  53. }
  54. _, err := db.DeleteSoft(WorkNode.TableName(), map[string]interface{}{"id": id})
  55. return err
  56. }
  57. func Count(where map[string]interface{}) (int64, error) {
  58. return db.Count(WorkNode.TableName(), where)
  59. }
  60. func CountRaw(where string, param map[string]interface{}) (int64, error) {
  61. query := "`zy_work_node` WHERE " + where
  62. return db.CountRaw(query, param)
  63. }
  64. func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.WorkNode, error) {
  65. if page.PageNum > 0 && page.PageSize > 0 {
  66. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  67. }
  68. return WorkNode.GetMulti(where, fields, retVal)
  69. }
  70. func GetWorkNodesRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error {
  71. field := "SELECT `zy_work_node`.*, `zy_work_type`.`name` as `work_type_name` FROM `zy_work_node` left join `zy_work_type` on `zy_work_type`.`id` = `zy_work_node`.`work_type_id` "
  72. return db.GetMultiRaw(field, where, param, retVal)
  73. }
  74. func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.WorkNode, error) {
  75. return WorkNode.GetOne(where, fields, retVal)
  76. }
  77. func GetInfoByID(id int, fields []string, retVal interface{}) (*models.WorkNode, error) {
  78. return GetOne(map[string]interface{}{"id": id}, fields, retVal)
  79. }
  80. func CheckWorkNodeDuplicate(name string) bool {
  81. workNodeInfo, err := GetOne(map[string]interface{}{"name": name, "deleted_at": 0}, nil, nil)
  82. return workNodeInfo != nil && err == nil
  83. }