package order import ( "fmt" "zhiyuan/models" "zhiyuan/pkg/db" orderParam "zhiyuan/pkg/param/order" "zhiyuan/services/admin" "zhiyuan/services/user" ) var ASOrderEvent models.ASOrderEvent type EventForm struct { EventID int OrderID int OrderState int Servicer int Leader int Repairer int Title string Content string Type int Pics string Date string } func GetEventList(where map[string]interface{}, fields []string, retVal interface{}) ([]*models.ASOrderEvent, error) { return ASOrderEvent.GetMulti(where, fields, retVal) } func GetListJoinOrder(where map[string]string, param map[string]interface{}, retVal interface{}) error { 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" return db.GetMultiRaw(sql, where, param, retVal) } func GetCountJoinOrder(where string, param map[string]interface{}) (int64, error) { sql := "zy_as_order_event e LEFT JOIN zy_as_order o ON e.order_id=o.id WHERE " + where return db.CountRaw(sql, param) } func AddEvent(form EventForm) error { // get order Info orderInfo, err := GetInfoByID(form.OrderID, nil, nil) if err != nil { return err } // user info userInfo, err := user.GetInfoByID(orderInfo.UserID, nil, nil) if err != nil { return err } if userInfo.Name == "" { userInfo.Name = userInfo.NickName } switch form.OrderState { case orderParam.State.Revoked.ID: if form.Servicer > 0 { form.Title = fmt.Sprintf("客服【%s】撤销工单", admin.GetNameByID(form.Servicer)) } else { form.Title = fmt.Sprintf("用户【%s】撤销工单", userInfo.Name) } case orderParam.State.Created.ID: form.Title = fmt.Sprintf("用户【%s】已提交报修订单", userInfo.Name) case orderParam.State.Checked.ID: form.Title = fmt.Sprintf("客服【%s】已审核工单,业主维修时间:%s", admin.GetNameByID(form.Servicer), form.Content) case orderParam.State.Allotted.ID: form.Title = fmt.Sprintf("客服【%s】已分配维修人员【%s】", admin.GetNameByID(form.Servicer), admin.GetNameByID(form.Leader)) case orderParam.State.SupConfirmed.ID: form.Title = fmt.Sprintf("维修人员【%s】已确认工单", admin.GetNameByID(form.Leader)) case orderParam.State.Repairing.ID: form.Title = fmt.Sprintf("维修人员【%s】上门服务处理中,预计上门时间:%s", admin.GetNameByID(form.Leader), form.Date) case orderParam.State.Suspending.ID: form.Title = fmt.Sprintf("客服【%s】修改订单状态为维修待定", admin.GetNameByID(form.Servicer)) case orderParam.State.Repaired.ID: form.Title = fmt.Sprintf("已完成维修") repairInfo, err := GetRepairInfoByID(orderInfo.RepairID, nil, nil) if err != nil { return err } form.Content = repairInfo.Content form.Pics = repairInfo.Pics case orderParam.State.Confirmed.ID: form.Title = fmt.Sprintf("用户【%s】已确认完成并评价", userInfo.Name) case orderParam.State.Completed.ID: form.Title = fmt.Sprintf("客服【%s】修改订单状态为已完结", admin.GetNameByID(form.Servicer)) } if form.Type == 0 { form.Type = 1 } eventMap := map[string]interface{}{ "order_id": form.OrderID, "order_state": form.OrderState, "servicer": form.Servicer, "leader": form.Leader, "repairer": form.Repairer, "Title": form.Title, "content": form.Content, "pics": form.Pics, } if form.EventID > 0 { db.Update(ASOrderEvent.TableName(), map[string]interface{}{"id": form.EventID}, eventMap) } else { _, err = db.InsertOne(ASOrderEvent.TableName(), eventMap) } return err } func EventCount(where map[string]interface{}) (int64, error) { return db.Count(ASOrderEvent.TableName(), where) } func GetEventInfo(where map[string]interface{}, fields []string, retVal interface{}) (*models.ASOrderEvent, error) { return ASOrderEvent.GetOne(where, fields, retVal) }