build.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package pick
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "zhiyuan/pkg/app"
  5. "zhiyuan/pkg/param/material/item"
  6. pkgParam "zhiyuan/pkg/param/material/pkg"
  7. "zhiyuan/pkg/utils"
  8. "zhiyuan/services/form"
  9. "zhiyuan/services/material/pick"
  10. "zhiyuan/services/material/pkg"
  11. )
  12. func BuildList(c *gin.Context) {
  13. pkgID := utils.StrTo(c.Query("pkg_id")).MustInt()
  14. if pkgID <= 0 {
  15. app.Error(c, "套餐id有误")
  16. return
  17. }
  18. pkgInfo, err := pkg.GetPkg(map[string]interface{}{"id": pkgID}, []string{"id", "room_types", "pkg_name"}, nil)
  19. if err != nil {
  20. app.Error(c, "套餐id有误")
  21. return
  22. }
  23. type BuildList struct {
  24. ID int `json:"id"`
  25. BuildName string `json:"build_name"`
  26. BuildType int `json:"build_type"`
  27. Price float64 `json:"price"`
  28. Unit int `json:"unit"`
  29. UnitName string `json:"unit_name"`
  30. BuildTypeName string `json:"build_type_name"`
  31. }
  32. buildList := make([]BuildList, 0)
  33. if _, err := pick.GetBuilds(map[string]interface{}{"pkg_id": pkgID}, nil, app.Page{}, &buildList); err != nil {
  34. app.Error(c, err.Error())
  35. return
  36. }
  37. BuildListMap := make(map[int][]BuildList, 0)
  38. unitTypes := utils.ParseSliceMap(item.Params.Unit, "id")
  39. for _, v := range buildList {
  40. v.UnitName = utils.ToStr(unitTypes[utils.ToStr(v.Unit)]["name"])
  41. BuildListMap[v.BuildType] = append(BuildListMap[v.BuildType], v)
  42. }
  43. type PkgBuildList struct {
  44. BuildType int `json:"build_type"`
  45. BuildTypeName string `json:"build_type_name"`
  46. Builds []BuildList `json:"builds"`
  47. }
  48. pkgBuildListGroup := make([]PkgBuildList, 0)
  49. for _, v := range pkgParam.Params.BuildType {
  50. if BuildListMap[v.ID] == nil {
  51. BuildListMap[v.ID] = make([]BuildList, 0)
  52. }
  53. pkgBuildListGroup = append(pkgBuildListGroup, PkgBuildList{
  54. BuildType: v.ID,
  55. BuildTypeName: v.Name,
  56. Builds: BuildListMap[v.ID],
  57. })
  58. }
  59. pkgBuildList := make([]map[string]interface{}, 0)
  60. for _, v := range pkgBuildListGroup {
  61. pkgBuildList = append(pkgBuildList, map[string]interface{}{
  62. "build_type": v.BuildType,
  63. "build_type_name": v.BuildTypeName,
  64. "rowspan": len(v.Builds) + 1,
  65. "colspan": 1,
  66. })
  67. for _, build := range v.Builds {
  68. pkgBuildList = append(pkgBuildList, map[string]interface{}{
  69. "id": build.ID,
  70. "unit_name": build.UnitName,
  71. "unit": build.Unit,
  72. "price": build.Price,
  73. "build_type": build.BuildType,
  74. "build_name": build.BuildName,
  75. "rowspan": 0,
  76. "colspan": 0,
  77. })
  78. }
  79. }
  80. app.Success(c, map[string]interface{}{"build_list": pkgBuildList, "pkg_info": pkgInfo})
  81. }
  82. func BuildAdd(c *gin.Context) {
  83. var form form.MaterialPickBuildAdd
  84. if app.Bind(c, &form) != nil {
  85. return
  86. }
  87. if id, err := pick.AddBuild(form); err != nil {
  88. app.Error(c, err.Error())
  89. return
  90. } else {
  91. app.Success(c, gin.H{"id": id})
  92. }
  93. }
  94. func BuildEdit(c *gin.Context) {
  95. id := utils.StrTo(c.Param("id")).MustInt()
  96. if id <= 0 {
  97. app.Error(c, "id有误")
  98. return
  99. }
  100. var form form.MaterialPickBuildAdd
  101. if app.Bind(c, &form) != nil {
  102. return
  103. }
  104. if _, err := pick.EditBuild(form, id); err != nil {
  105. app.ErrorMsg(c, err.Error(), nil)
  106. return
  107. }
  108. app.Success(c, nil)
  109. }
  110. func BuildDel(c *gin.Context) {
  111. id := utils.StrTo(c.Param("id")).MustInt()
  112. if id <= 0 {
  113. app.Error(c, "id有误")
  114. return
  115. }
  116. if _, err := pick.DelBuild(id); err != nil {
  117. app.ErrorMsg(c, err.Error(), nil)
  118. return
  119. }
  120. app.Success(c, nil)
  121. }