package orderservicelogic import ( "app-cloudep-order-server/gen_result/pb/order" "app-cloudep-order-server/internal/domain" model "app-cloudep-order-server/internal/model/mongo" "context" ers "code.30cm.net/digimon/library-go/errs" "app-cloudep-order-server/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) type CancelOrderLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewCancelOrderLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelOrderLogic { return &CancelOrderLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // CancelOrderQuery 1.建單失敗 9.交易取消 10.交易異常 type CancelOrderQuery struct { BusinessID string `json:"business_id" validate:"required"` Status int64 `json:"status" validate:"required,oneof=1 9 10"` } // CancelOrder 取消訂單 func (l *CancelOrderLogic) CancelOrder(in *order.CancelOrderReq) (*order.OKResp, error) { // 驗證資料 if err := l.svcCtx.Validate.ValidateAll(&CancelOrderQuery{ BusinessID: in.GetBusinessId(), Status: in.GetStatus(), }); err != nil { // 錯誤代碼 06-011-00 return nil, ers.InvalidFormat(err.Error()) } _, err := l.svcCtx.OrderModel.UpdateStatus(l.ctx, model.UpdateStatusReq{ BusinessID: in.GetBusinessId(), Status: in.GetStatus(), }) if err != nil { // 錯誤代碼 06-021-02 e := domain.CommentErrorL( domain.CancelOrderErrorCode, logx.WithContext(l.ctx), []logx.LogField{ {Key: "req", Value: in}, {Key: "func", Value: "OrderModel.UpdateStatus"}, {Key: "err", Value: err}, }, "failed to update order status:").Wrap(err) return nil, e } return &order.OKResp{}, nil }