Пример #1
0
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
}