work_node.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package models
  2. import (
  3. "errors"
  4. "zhiyuan/pkg/db"
  5. "github.com/gin-gonic/gin"
  6. )
  7. type WorkNode struct {
  8. ID int64 `json:"id" prop:"add:false"`
  9. Name string `json:"name" label:"节点名称" type:"string" prop:"add edit" search:"like"`
  10. Color string `json:"color" label:"节点颜色" type:"string" prop:"add edit"`
  11. Logo string `json:"logo" label:"节点图标" type:"string" prop:"add edit"`
  12. WorkTypeId int64 `json:"work_type_id" label:"需求工种" type:"int" prop:"edit" default:"0"`
  13. State int64 `json:"state" label:"状态" type:"int" prop:"edit" default:"0"`
  14. OrderAt int64 `json:"order_at" prop:"add:false select:false"`
  15. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  16. CreatedAt int64 `json:"created_at" prop:"add:false select:false"`
  17. UpdatedAt int64 `json:"updated_at" prop:"add:false select:false"`
  18. Processs []WorkProcess `json:"processs" prop:"ignore"`
  19. db.BaseModel
  20. }
  21. func (WorkNode) TableName() string {
  22. return "zy_work_node"
  23. }
  24. func (WorkNode) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  25. return true
  26. }
  27. func (WorkNode) OnePrivilege(c *gin.Context, id int64) bool {
  28. return true
  29. }
  30. func (WorkNode) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  31. return nil
  32. }
  33. func (WorkNode) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  34. return nil
  35. }
  36. func (WorkNode) DelPrivilege(c *gin.Context, id int64) error {
  37. return nil
  38. }
  39. func (WorkNode) OrderField() string {
  40. return "order_at"
  41. }
  42. func (WorkNode) Page() bool {
  43. return false
  44. }
  45. func (WorkNode) Count() bool {
  46. return true
  47. }
  48. func (a WorkNode) GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*WorkNode, error) {
  49. if retVal == nil {
  50. var work_node *WorkNode
  51. err := db.GetOne(a.TableName(), where, fields, &work_node)
  52. return work_node, err
  53. } else {
  54. err := db.GetOne(a.TableName(), where, fields, retVal)
  55. return nil, err
  56. }
  57. }
  58. func (a WorkNode) GetMulti(where map[string]interface{}, fields []string, retVal interface{}) ([]*WorkNode, error) {
  59. if retVal == nil {
  60. var work_node []*WorkNode
  61. err := db.GetMulti(a.TableName(), where, fields, &work_node)
  62. return work_node, err
  63. } else {
  64. err := db.GetMulti(a.TableName(), where, fields, retVal)
  65. return nil, err
  66. }
  67. }
  68. func (a WorkNode) GetOneRaw(where map[string]string, param map[string]interface{}, retVal interface{}) (*WorkNode, error) {
  69. work_node, err := a.GetMultiRaw(where, param, retVal)
  70. if err != nil {
  71. return nil, err
  72. }
  73. if len(work_node) == 0 {
  74. return nil, errors.New("empty record2")
  75. }
  76. return work_node[0], nil
  77. }
  78. func (a WorkNode) GetMultiRaw(where map[string]string, param map[string]interface{}, retVal interface{}) ([]*WorkNode, error) {
  79. field := "SELECT * FROM zy_work_node "
  80. if retVal == nil {
  81. var work_node []*WorkNode
  82. err := db.GetMultiRaw(field, where, param, &work_node)
  83. return work_node, err
  84. } else {
  85. err := db.GetMultiRaw(field, where, param, retVal)
  86. return nil, err
  87. }
  88. }
  89. func GetWorkNodeModel(id int64) *WorkNode {
  90. var node *WorkNode
  91. db.GetModel(map[string]interface{}{"id": id}, &node)
  92. if node != nil {
  93. var processs []WorkProcess
  94. where := map[string]interface{}{"node_id": id, "deleted_at": 0}
  95. db.GetModel(where, &processs)
  96. node.Processs = processs
  97. for i, v := range node.Processs {
  98. where := map[string]interface{}{"process_id": v.ID, "deleted_at": 0}
  99. db.GetModel(where, &(node.Processs[i].Requires))
  100. }
  101. }
  102. return node
  103. }
  104. func (model WorkNode) Copy(name string, order int64) (int64, error) {
  105. id, err := db.InsertModel(db.Type(model), map[string]interface{}{
  106. "name": name,
  107. "color": model.Color,
  108. "logo": model.Logo,
  109. "work_type_id": model.WorkTypeId,
  110. "state": model.State,
  111. "order_at": order,
  112. })
  113. if err != nil {
  114. return 0, err
  115. }
  116. err = CopyWorkProcesss(model.Processs, id, order)
  117. if err != nil {
  118. return id, err
  119. }
  120. return id, nil
  121. }