group.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package budget
  2. import (
  3. "zhiyuan/pkg/db"
  4. "zhiyuan/pkg/utils"
  5. "github.com/gin-gonic/gin"
  6. )
  7. type Group struct {
  8. ID int64 `json:"id" prop:"add:false"`
  9. QuoteId int64 `json:"quoteId" type:"int" prop:"add" search:"="`
  10. TableId int64 `json:"tableId" type:"int" prop:"add" search:"="`
  11. ModuleId int64 `json:"moduleId" type:"int" prop:"add" search:"="`
  12. Name string `json:"name" label:"名称值" type:"string" prop:"add edit" search:"like"`
  13. Property string `json:"property" label:"属性" type:"string" prop:"edit"`
  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. Rows []QuoteData `json:"rows" prop:"ignore"`
  19. Prop map[string]string `json:"prop" prop:"ignore"`
  20. db.BaseModel
  21. }
  22. func (Group) TableName() string {
  23. return "zy_budget_group"
  24. }
  25. func (Group) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  26. return true
  27. }
  28. func (Group) OnePrivilege(c *gin.Context, id int64) bool {
  29. return true
  30. }
  31. func (Group) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  32. return nil
  33. }
  34. func (Group) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  35. return nil
  36. }
  37. func (Group) DelPrivilege(c *gin.Context, id int64) error {
  38. return nil
  39. }
  40. func (Group) OrderField() string {
  41. return "order_at"
  42. }
  43. func (Group) Page() bool {
  44. return false
  45. }
  46. func (Group) Count() bool {
  47. return false
  48. }
  49. func (model Group) GetProperty() map[string]string {
  50. props := make(map[string]string)
  51. utils.JsonDecode(model.Property).To(&props)
  52. return props
  53. }
  54. func (model Group) GetID() int64 {
  55. return model.ID
  56. }
  57. func (model Group) GetProp(name string) (expression string, ok bool) {
  58. expression, ok = model.Prop[name]
  59. return
  60. }
  61. func (model Group) GetSubs() *[]QuoteData {
  62. return &model.Rows
  63. }
  64. func (model Group) GetName() string {
  65. return model.Name
  66. }
  67. func (model Group) GetHeaders() *[]QuoteData {
  68. return nil
  69. }
  70. func (model Group) GetItem() *Item {
  71. return nil
  72. }
  73. func (model Group) GetValue() string {
  74. return ""
  75. }
  76. func (model Group) GetQuote() *Quote {
  77. return nil
  78. }
  79. func (model Group) GetTable() *Table {
  80. return nil
  81. }
  82. func (model Group) GetHeader() *Header {
  83. return nil
  84. }
  85. func (model Group) GetModule() *Module {
  86. return nil
  87. }
  88. func (model Group) GetGroup() *Group {
  89. return &model
  90. }
  91. func (model Group) GetRow() *Row {
  92. return nil
  93. }
  94. func (model Group) GetMyItem() *Item {
  95. return nil
  96. }
  97. func CopyGroups(datas []QuoteData, quoteId int64, tableId int64, moduleId int64, order int64) error {
  98. for i, data := range datas {
  99. _, err := data.GetGroup().Copy(quoteId, tableId, moduleId, order+int64(len(datas)-i))
  100. if err != nil {
  101. return err
  102. }
  103. }
  104. return nil
  105. }
  106. func findGroups(moduleId int64, list []Group, rowlist []Row, itemlist []Item) ([]QuoteData, []QuoteData) {
  107. groups := make([]QuoteData, 0)
  108. rows := make([]QuoteData, 0)
  109. for _, v := range list {
  110. if v.ModuleId == moduleId {
  111. v.Rows = findRows(v.ID, rowlist, itemlist)
  112. v.Prop = v.GetProperty()
  113. groups = append(groups, v)
  114. rows = append(rows, v.Rows...)
  115. }
  116. }
  117. return groups, rows
  118. }
  119. func (model Group) Copy(quoteId int64, tableId int64, moduleId int64, order int64) (int64, error) {
  120. id, err := db.InsertModel(db.Type(model), map[string]interface{}{
  121. "quoteId": quoteId,
  122. "tableId": tableId,
  123. "moduleId": moduleId,
  124. "name": model.Name,
  125. "property": model.Property,
  126. "order_at": order,
  127. })
  128. if err != nil {
  129. return 0, err
  130. }
  131. err = CopyRows(model.Rows, quoteId, tableId, moduleId, id, order)
  132. if err != nil {
  133. return id, err
  134. }
  135. return id, nil
  136. }