comment.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package order
  2. import (
  3. "errors"
  4. "strings"
  5. "zhiyuan/models"
  6. "zhiyuan/pkg/db"
  7. orderParam "zhiyuan/pkg/param/order"
  8. "zhiyuan/pkg/utils"
  9. "zhiyuan/services/form"
  10. )
  11. var ASOrderComment models.ASOrderComment
  12. func GetComment(where map[string]interface{}, fields []string, retVal interface{}) (*models.ASOrderComment, error) {
  13. return ASOrderComment.GetOne(where, fields, retVal)
  14. }
  15. func Comment(form form.OrderComment, id int) error {
  16. orderInfo, err := GetInfoByID(id, nil, nil)
  17. if err != nil {
  18. return err
  19. }
  20. if form.UserID > 0 && orderInfo.UserID != form.UserID {
  21. return errors.New("只能操作自己的订单")
  22. }
  23. if !utils.IsContain(orderParam.Allow.Confirm, orderInfo.State) || orderInfo.CommentID > 0 {
  24. return errors.New("该工单不允许确认完成")
  25. }
  26. commentMap := map[string]interface{}{
  27. "user_id": orderInfo.UserID,
  28. "order_id": orderInfo.ID,
  29. "leader": orderInfo.Leader,
  30. "content": form.Content,
  31. "tags": strings.Join(form.Tags, ","),
  32. "star": form.Star,
  33. }
  34. commentID, err := db.InsertOne(ASOrderComment.TableName(), commentMap)
  35. if err != nil {
  36. return errors.New("订单评价失败")
  37. }
  38. data := map[string]interface{}{
  39. "state": orderParam.State.Confirmed.ID,
  40. "comment_id": commentID,
  41. }
  42. if orderInfo.IsForce != 0 {
  43. data["state"] = orderParam.State.Completed.ID
  44. }
  45. _, err = db.Update(ASOrder.TableName(), map[string]interface{}{"id": id}, data)
  46. if err != nil {
  47. return err
  48. }
  49. // 添加订单 event
  50. return AddEvent(EventForm{
  51. OrderID: id,
  52. OrderState: orderParam.State.Confirmed.ID,
  53. })
  54. }
  55. func CommentCount(where map[string]interface{}) (int64, error) {
  56. return db.Count(ASOrderComment.TableName(), where)
  57. }