event.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package order
  2. import (
  3. "fmt"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/db"
  6. orderParam "zhiyuan/pkg/param/order"
  7. "zhiyuan/services/admin"
  8. "zhiyuan/services/user"
  9. )
  10. var ASOrderEvent models.ASOrderEvent
  11. type EventForm struct {
  12. EventID int
  13. OrderID int
  14. OrderState int
  15. Servicer int
  16. Leader int
  17. Repairer int
  18. Title string
  19. Content string
  20. Type int
  21. Pics string
  22. Date string
  23. }
  24. func GetEventList(where map[string]interface{}, fields []string, retVal interface{}) ([]*models.ASOrderEvent, error) {
  25. return ASOrderEvent.GetMulti(where, fields, retVal)
  26. }
  27. func GetListJoinOrder(where map[string]string, param map[string]interface{}, retVal interface{}) error {
  28. sql := "SELECT o.*, e.order_state, e.title FROM zy_as_order_event e LEFT JOIN zy_as_order o ON e.order_id=o.id"
  29. return db.GetMultiRaw(sql, where, param, retVal)
  30. }
  31. func GetCountJoinOrder(where string, param map[string]interface{}) (int64, error) {
  32. sql := "zy_as_order_event e LEFT JOIN zy_as_order o ON e.order_id=o.id WHERE " + where
  33. return db.CountRaw(sql, param)
  34. }
  35. func AddEvent(form EventForm) error {
  36. // get order Info
  37. orderInfo, err := GetInfoByID(form.OrderID, nil, nil)
  38. if err != nil {
  39. return err
  40. }
  41. // user info
  42. userInfo, err := user.GetInfoByID(orderInfo.UserID, nil, nil)
  43. if err != nil {
  44. return err
  45. }
  46. if userInfo.Name == "" {
  47. userInfo.Name = userInfo.NickName
  48. }
  49. switch form.OrderState {
  50. case orderParam.State.Revoked.ID:
  51. if form.Servicer > 0 {
  52. form.Title = fmt.Sprintf("客服【%s】撤销工单", admin.GetNameByID(form.Servicer))
  53. } else {
  54. form.Title = fmt.Sprintf("用户【%s】撤销工单", userInfo.Name)
  55. }
  56. case orderParam.State.Created.ID:
  57. form.Title = fmt.Sprintf("用户【%s】已提交报修订单", userInfo.Name)
  58. case orderParam.State.Checked.ID:
  59. form.Title = fmt.Sprintf("客服【%s】已审核工单,业主维修时间:%s", admin.GetNameByID(form.Servicer), form.Content)
  60. case orderParam.State.Allotted.ID:
  61. form.Title = fmt.Sprintf("客服【%s】已分配维修人员【%s】", admin.GetNameByID(form.Servicer), admin.GetNameByID(form.Leader))
  62. case orderParam.State.SupConfirmed.ID:
  63. form.Title = fmt.Sprintf("维修人员【%s】已确认工单", admin.GetNameByID(form.Leader))
  64. case orderParam.State.Repairing.ID:
  65. form.Title = fmt.Sprintf("维修人员【%s】上门服务处理中,预计上门时间:%s", admin.GetNameByID(form.Leader), form.Date)
  66. case orderParam.State.Suspending.ID:
  67. form.Title = fmt.Sprintf("客服【%s】修改订单状态为维修待定", admin.GetNameByID(form.Servicer))
  68. case orderParam.State.Repaired.ID:
  69. form.Title = fmt.Sprintf("已完成维修")
  70. repairInfo, err := GetRepairInfoByID(orderInfo.RepairID, nil, nil)
  71. if err != nil {
  72. return err
  73. }
  74. form.Content = repairInfo.Content
  75. form.Pics = repairInfo.Pics
  76. case orderParam.State.Confirmed.ID:
  77. form.Title = fmt.Sprintf("用户【%s】已确认完成并评价", userInfo.Name)
  78. case orderParam.State.Completed.ID:
  79. form.Title = fmt.Sprintf("客服【%s】修改订单状态为已完结", admin.GetNameByID(form.Servicer))
  80. }
  81. if form.Type == 0 {
  82. form.Type = 1
  83. }
  84. eventMap := map[string]interface{}{
  85. "order_id": form.OrderID,
  86. "order_state": form.OrderState,
  87. "servicer": form.Servicer,
  88. "leader": form.Leader,
  89. "repairer": form.Repairer,
  90. "Title": form.Title,
  91. "content": form.Content,
  92. "pics": form.Pics,
  93. }
  94. if form.EventID > 0 {
  95. db.Update(ASOrderEvent.TableName(), map[string]interface{}{"id": form.EventID}, eventMap)
  96. } else {
  97. _, err = db.InsertOne(ASOrderEvent.TableName(), eventMap)
  98. }
  99. return err
  100. }
  101. func EventCount(where map[string]interface{}) (int64, error) {
  102. return db.Count(ASOrderEvent.TableName(), where)
  103. }
  104. func GetEventInfo(where map[string]interface{}, fields []string, retVal interface{}) (*models.ASOrderEvent, error) {
  105. return ASOrderEvent.GetOne(where, fields, retVal)
  106. }