func (h *Handler) HandleCancel(req interface{}) (interface{}, error) { //找到相应的订单,不存在则返回失败 var ( cancelReq *CancelReq cancelResp = &CancelResp{} err error ok bool ) if cancelReq, ok = req.(*CancelReq); ok != true { return nil, fmt.Errorf("类型有误 ") } tx := h.db.Begin() defer func() { if h.db.GetErrors() != nil { log.Printf("DB error! now roll back. Err is %v", h.db.GetErrors()) tx.Rollback() } else { tx.Commit() } }() var existOrder order.Order cancelResp.Result = false cancelResp.OrderId = cancelReq.OrderId if h.db.Where("orderId = ? and stockCode = ?", cancelReq.OrderId, cancelReq.Symbol).First(&existOrder).RecordNotFound() { return nil, fmt.Errorf("找不到相应的记录 %v", err) } existOrder.State = order.ORDER_CANCELLED if err := h.db.Save(&existOrder).Error; err != nil { return nil, fmt.Errorf("更新失败 %v", err) } cancelResp.Result = true return cancelResp, err }