calculate.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package calc
  2. import (
  3. "time"
  4. "zhiyuan/pkg/db"
  5. "github.com/gin-gonic/gin"
  6. )
  7. type Calculate struct {
  8. ID int64 `json:"id" prop:"add:false"`
  9. Name string `json:"name" label:"产品名称" type:"string" prop:"add edit" search:"like"`
  10. State int64 `json:"state" label:"状态" type:"int" prop:"edit" default:"0" search:"="`
  11. Template int64 `json:"template" label:"模板" type:"int" prop:"edit" default:"0" search:"="`
  12. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  13. CreatedAt int64 `json:"created_at" prop:"add:false select:false"`
  14. UpdatedAt int64 `json:"updated_at" prop:"add:false select:false"`
  15. Props []Property `json:"props" prop:"ignore"`
  16. Items []Item `json:"items" prop:"ignore"`
  17. db.BaseModel
  18. }
  19. func (Calculate) TableName() string {
  20. return "zy_calculate"
  21. }
  22. func (Calculate) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  23. return true
  24. }
  25. func (Calculate) OnePrivilege(c *gin.Context, id int64) bool {
  26. return true
  27. }
  28. func (Calculate) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  29. return nil
  30. }
  31. func (Calculate) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  32. return nil
  33. }
  34. func (Calculate) DelPrivilege(c *gin.Context, id int64) error {
  35. return nil
  36. }
  37. func (Calculate) Page() bool {
  38. return true
  39. }
  40. func (Calculate) Count() bool {
  41. return true
  42. }
  43. func (Calculate) AddAfter(c *gin.Context, id int64, post map[string]interface{}, data map[string]interface{}) {
  44. if use, ok := post["use"].(float64); ok && use != 0 {
  45. calc := GetCalculateModel(int64(use), true)
  46. if calc != nil {
  47. order := time.Now().Unix()
  48. CopyPropertys(calc.Props, id, 0, order)
  49. CopyItems(calc.Items, id, 0, order)
  50. }
  51. }
  52. }
  53. func filterProps(list []Property) []Property {
  54. props := make([]Property, 0)
  55. for _, v := range list {
  56. if v.State == 1 {
  57. if v.Type == 1 {
  58. v.Value = ""
  59. }
  60. props = append(props, v)
  61. }
  62. }
  63. return props
  64. }
  65. func filterItems(list []Item) []Item {
  66. items := make([]Item, 0)
  67. for _, v := range list {
  68. if v.State == 1 {
  69. v.Props = filterProps(v.Props)
  70. v.Childs = filterItems(v.Childs)
  71. items = append(items, v)
  72. }
  73. }
  74. return items
  75. }
  76. func (model Calculate) FilterShow() Calculate {
  77. calc := model
  78. calc.Props = filterProps(calc.Props)
  79. calc.Items = filterItems(calc.Items)
  80. return calc
  81. }
  82. func GetCalculateModel(id int64, showAll bool) *Calculate {
  83. var calc *Calculate
  84. db.GetModel(map[string]interface{}{"id": id}, &calc)
  85. if calc != nil {
  86. var items []Item
  87. var props []Property
  88. where := map[string]interface{}{"calcId": id, "deleted_at": 0}
  89. if !showAll {
  90. where["state"] = 1
  91. }
  92. db.GetModel(where, &items)
  93. if !showAll {
  94. where["type !="] = 1
  95. }
  96. db.GetModel(where, &props)
  97. calc.Props = findProps(0, props)
  98. calc.Items = findItems(0, items, props)
  99. }
  100. return calc
  101. }
  102. func (model Calculate) Copy(name string) (int64, error) {
  103. id, err := db.InsertModel(db.Type(model), map[string]interface{}{
  104. "name": name,
  105. })
  106. if err != nil {
  107. return 0, err
  108. }
  109. order := time.Now().Unix()
  110. err = CopyPropertys(model.Props, id, 0, order)
  111. if err != nil {
  112. return id, err
  113. }
  114. err = CopyItems(model.Items, id, 0, order)
  115. if err != nil {
  116. return id, err
  117. }
  118. return id, nil
  119. }