order.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package bid
  2. import (
  3. "strings"
  4. "zhiyuan/pkg/app"
  5. "zhiyuan/pkg/param/material"
  6. bidParam "zhiyuan/pkg/param/material/bid"
  7. "zhiyuan/pkg/utils"
  8. "zhiyuan/services/form"
  9. "zhiyuan/services/material/bid"
  10. "zhiyuan/services/material/pkg"
  11. "zhiyuan/services/structs"
  12. "github.com/gin-gonic/gin"
  13. )
  14. func OrderAdd(c *gin.Context) {
  15. var form form.MaterialBidOrderAdd
  16. if app.Bind(c, &form) != nil {
  17. return
  18. }
  19. form.AdminID = c.GetInt("adminID")
  20. id, err := bid.AddOrder(form)
  21. if err != nil {
  22. app.Error(c, err.Error())
  23. return
  24. }
  25. app.Success(c, gin.H{"id": id})
  26. }
  27. func OrderEdit(c *gin.Context) {
  28. orderID := utils.StrTo(c.Param("id")).MustInt()
  29. if orderID <= 0 {
  30. app.Error(c, "订单 id 有误")
  31. return
  32. }
  33. var form form.MaterialBidOrderAdd
  34. if app.Bind(c, &form) != nil {
  35. return
  36. }
  37. id, err := bid.EditOrder(form, orderID)
  38. if err != nil {
  39. app.ErrorMsg(c, err.Error(), nil)
  40. return
  41. }
  42. app.Success(c, gin.H{"id": id})
  43. }
  44. func OrderDel(c *gin.Context) {
  45. id := utils.StrTo(c.Param("id")).MustInt()
  46. if id <= 0 {
  47. app.Error(c, "订单 id 有误")
  48. return
  49. }
  50. if err := bid.DelOrder(id); err != nil {
  51. app.Error(c, err.Error())
  52. return
  53. }
  54. app.Success(c, nil)
  55. }
  56. func OrderList(c *gin.Context) {
  57. page := app.HandlePageNum(c)
  58. where := map[string]interface{}{"_orderby": "id desc", "admin_id": c.GetInt("adminID"), "deleted_at": 0}
  59. if state := utils.ToInt(c.Query("state")); state >= 0 {
  60. where["state"] = state
  61. }
  62. if area := utils.ToInt(c.Query("area")); area >= 0 {
  63. areaMap := bidParam.GetAreaMap()
  64. where["house_area >"] = areaMap[area].Min
  65. where["house_area <="] = areaMap[area].Max
  66. }
  67. if keyword := c.Query("keyword"); keyword != "" {
  68. if _, err := utils.StrTo(keyword).Float64(); err == nil {
  69. where["_or"] = []map[string]interface{}{
  70. {"customer_phone like": "%" + keyword + "%"},
  71. {"house_address like": "%" + keyword + "%"},
  72. }
  73. } else {
  74. where["_or"] = []map[string]interface{}{
  75. {"customer_name like": "%" + keyword + "%"},
  76. {"house_address like": "%" + keyword + "%"},
  77. }
  78. }
  79. }
  80. orderList := make([]structs.MaterialBidOrderList, 0)
  81. if _, err := bid.GetOrders(where, nil, page, &orderList); err != nil {
  82. app.Error(c, err.Error())
  83. return
  84. }
  85. pkgMap := make(map[int]string)
  86. if pkgList, _ := pkg.GetPkgs(nil, []string{"id, pkg_name"}, app.Page{}, nil); pkgList != nil {
  87. for _, v := range pkgList {
  88. pkgMap[v.ID] = v.PkgName
  89. }
  90. }
  91. roomTypeMap := material.GetRoomTypeMap(true)
  92. orderStatusMap := bidParam.GetOrderStateMap()
  93. for k, v := range orderList {
  94. if pkgName, ok := pkgMap[v.PkgID]; ok {
  95. v.PkgName = pkgName
  96. }
  97. v.StateName = orderStatusMap[v.State].Name
  98. v.StateColor = orderStatusMap[v.State].Color
  99. v.Auth = structs.MaterialBidOrderAuth{
  100. Edit: utils.IsContain(bidParam.OrderAllow.Edit, v.State),
  101. }
  102. v.CreatedAt = utils.DateS(v.CreatedAt, "YYYY-MM-DD HH:mm")
  103. styleName := make([]string, 0)
  104. var houseStyle []structs.HouseStyle
  105. utils.JsonDecode(v.HouseStyle).To(&houseStyle)
  106. for _, house := range houseStyle {
  107. styleName = append(styleName, utils.ToStr(house.Num)+roomTypeMap[house.Type])
  108. }
  109. v.HouseStyle = strings.Join(styleName, "")
  110. orderList[k] = v
  111. }
  112. app.Success(c, orderList)
  113. }
  114. func OrderInfo(c *gin.Context) {
  115. id := utils.ToInt(c.Param("id"))
  116. if id <= 0 {
  117. app.Error(c, "工单 id 为空")
  118. }
  119. var orderInfo structs.MaterialBidOrderList
  120. if _, err := bid.GetOrder(map[string]interface{}{"id": id}, nil, &orderInfo); err != nil {
  121. app.Error(c, err.Error())
  122. }
  123. roomTypeMap := material.GetRoomTypeMap(true)
  124. var houseStyle []structs.HouseStyle
  125. utils.JsonDecode(orderInfo.HouseStyle).To(&houseStyle)
  126. styleName := make([]string, 0)
  127. for _, house := range houseStyle {
  128. styleName = append(styleName, utils.ToStr(house.Num)+roomTypeMap[house.Type])
  129. }
  130. orderInfo.RoomText = strings.Join(styleName, "")
  131. utils.JsonDecode(orderInfo.HouseStyle).To(&orderInfo.HouseStyleDecode)
  132. utils.JsonDecode(orderInfo.Param).To(&orderInfo.ParamDecode)
  133. utils.JsonDecode(orderInfo.Customize).To(&orderInfo.CustomizeDecode)
  134. utils.JsonDecode(orderInfo.CustomizePriceDetail).To(&orderInfo.CustomizePriceDecode)
  135. utils.JsonDecode(orderInfo.PackagePriceDetail).To(&orderInfo.PackagePriceDecode)
  136. utils.JsonDecode(orderInfo.InclusivePriceDetail).To(&orderInfo.InclusivePriceDecode)
  137. utils.JsonDecode(orderInfo.ToiletPriceDetail).To(&orderInfo.ToiletPriceDecode)
  138. bidMap := make(map[int]*structs.MaterialBidList)
  139. bidList := make([]*structs.MaterialBidList, 0)
  140. if _, err := bid.GetBidList(map[string]interface{}{"pkg_id": orderInfo.PkgID}, nil, app.Page{}, &bidList); err == nil {
  141. for _, v := range bidList {
  142. bidMap[v.ID] = v
  143. }
  144. }
  145. app.Success(c, gin.H{
  146. "orderInfo": orderInfo,
  147. "bidList": bidMap,
  148. })
  149. }