package order import ( "errors" "strings" "zhiyuan/models" "zhiyuan/pkg/db" orderParam "zhiyuan/pkg/param/order" "zhiyuan/pkg/utils" "zhiyuan/services/form" ) var ASOrderComment models.ASOrderComment func GetComment(where map[string]interface{}, fields []string, retVal interface{}) (*models.ASOrderComment, error) { return ASOrderComment.GetOne(where, fields, retVal) } func Comment(form form.OrderComment, id int) error { orderInfo, err := GetInfoByID(id, nil, nil) if err != nil { return err } if form.UserID > 0 && orderInfo.UserID != form.UserID { return errors.New("只能操作自己的订单") } if !utils.IsContain(orderParam.Allow.Confirm, orderInfo.State) || orderInfo.CommentID > 0 { return errors.New("该工单不允许确认完成") } commentMap := map[string]interface{}{ "user_id": orderInfo.UserID, "order_id": orderInfo.ID, "leader": orderInfo.Leader, "content": form.Content, "tags": strings.Join(form.Tags, ","), "star": form.Star, } commentID, err := db.InsertOne(ASOrderComment.TableName(), commentMap) if err != nil { return errors.New("订单评价失败") } data := map[string]interface{}{ "state": orderParam.State.Confirmed.ID, "comment_id": commentID, } if orderInfo.IsForce != 0 { data["state"] = orderParam.State.Completed.ID } _, err = db.Update(ASOrder.TableName(), map[string]interface{}{"id": id}, data) if err != nil { return err } // 添加订单 event return AddEvent(EventForm{ OrderID: id, OrderState: orderParam.State.Confirmed.ID, }) } func CommentCount(where map[string]interface{}) (int64, error) { return db.Count(ASOrderComment.TableName(), where) }