module.go 3.9 KB

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