package logic import ( "fusenapi/utils/auth" "fusenapi/utils/basic" "context" "fusenapi/server/home-user-auth/internal/svc" "fusenapi/server/home-user-auth/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type UserOderDeleteLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewUserOderDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserOderDeleteLogic { return &UserOderDeleteLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *UserOderDeleteLogic) UserOderDelete(req *types.RequestOrderId, userinfo *auth.UserInfo) (resp *basic.Response) { // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null // if !userinfo.IsUser() { // return resp.SetStatus(basic.CodeUnAuth) // 如果不是用户信息, 返回未授权错误 // } // //订单id // orderId := req.OrderId // if orderId < 1 { // return resp.SetStatus(basic.CodeRequestParamsErr) // } // m := l.svcCtx.AllModels.FsOrder // order, err := m.FindOne(l.ctx, userinfo.UserId, orderId) // if err != nil { // if errors.Is(err, gorm.ErrRecordNotFound) { // return resp.SetStatus(basic.CodeOrderNotFoundErr) // } // logx.Error(err) // return resp.SetStatus(basic.CodeDbSqlErr) // } // if auth.CheckValueRange[constants.Order]( // constants.Order(*order.Status), // constants.STATUS_NEW_NOT_PAY, // constants.STATUS_NEW_PAY_COMPLETED, // constants.STATUS_NEW_PART_PAY, // ) { // return resp.SetStatus(basic.CodeOrderNotCancelledErr) // } // if *order.IsPayCompleted == 1 && // time.Now().After(time.Unix(*order.Ctime, 0).Add(48*time.Hour)) { // return resp.SetStatus(basic.CodeOrderNotCancelledErr) // } // uOrder := &gmodel.FsOrder{ // Id: orderId, // } // var ( // isCancel int64 = 1 // ustatus int64 = int64(constants.STATUS_NEW_CANCEL) // ) // // 修改取消状态和取消原因 // uOrder.Status = &ustatus // uOrder.IsCancel = &isCancel // uOrder.RefundReasonId = &req.RefundReasonId // uOrder.RefundReason = &req.RefundReason // err = m.Update(l.ctx, uOrder) // if err != nil { // logx.Error(err) // return resp.SetStatus(basic.CodeDbUpdateErr) // } // var ( // IsRefund int64 = 0 // CreatedAt = time.Now().UTC().Unix() // ) // refund := &gmodel.FsRefundReason{ // IsRefund: &IsRefund, // RefundReasonId: &req.RefundReasonId, // RefundReason: &req.RefundReason, // OrderId: &order.Id, // CreatedAt: &CreatedAt, // } // mFsRefundReason := gmodel.NewFsRefundReasonModel(l.svcCtx.MysqlConn) // err = mFsRefundReason.Create(l.ctx, refund) // if err != nil { // logx.Error(err) // return resp.SetStatus(basic.CodeDbSqlErr) // } // // 退款 // // 调用第三方接口发起退款 // config := &stripe.BackendConfig{ // MaxNetworkRetries: stripe.Int64(0), // Zero retries // } // sc := &client.API{} // sc.Init(l.svcCtx.Config.Stripe.SK, &stripe.Backends{ // API: stripe.GetBackendWithConfig(stripe.APIBackend, config), // Uploads: stripe.GetBackendWithConfig(stripe.UploadsBackend, config), // }) // // ['order_number' => $order->sn, 'is_refund' => 0, 'pay_status' => 1] // payM := l.svcCtx.AllModels.FsPay // // 查询支付信息 // pays, err := payM.GetOrderPayList(l.ctx, *order.Sn, 1, 0) // for _, pay := range pays { // sc.Refunds.New(&stripe.RefundParams{ // PaymentIntent: pay.TradeNo, // }) // } // if err != nil { // if errors.Is(err, gorm.ErrRecordNotFound) { // return resp.SetStatus(basic.CodeApiErr) // } // } return resp.SetStatus(basic.CodePayCancelOk) // return ResponseError(500, "Cancellation failure") // return resp.SetStatus(basic.CodePayCancelNotOk) } // func (l *OrderLogic) CancelOrder(req *types.RequestCancelOrder, userinfo *auth.UserInfo) (resp *basic.Response) { // // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // // userinfo 传入值时, 一定不为null // if !userinfo.IsUser() { // return resp.SetStatus(basic.CodeUnAuth) // 如果不是用户信息, 返回未授权错误 // } // //订单id // id := req.ReqParam.Get("id") // if id == "" { // return resp.SetStatus(basic.CodeParamErr) // } // //验证当前订单是否可以取消 // order, err := gmodel.NewFsOrderModel(l.svcCtx.MysqlConn).GetOne(l.ctx, map[string]interface{}{"user_id": userinfo.UserId, "id": id}) // if err != nil { // return resp.SetStatus(basic.CodeDbQueryErr) // } // if order == nil { // return resp.SetStatus(basic.CodeNotFound) // } // //那些状态下是不能关闭的? (订单完成,退款完成,关闭订单) // if order.Status == gconst.OrderStatusComplete || // order.Status == gconst.OrderStatusRefund || // order.Status == gconst.OrderStatusClose { // return resp.SetStatus(basic.CodeCannotOperate) // } // //订单状态修改 // order.Status = gconst.OrderStatusDelete // order.IsDeleted = 1 // result, err := gmodel.NewFsOrderModel(l.svcCtx.MysqlConn).UpdateOne(l.ctx, order) // if err != nil { // return resp.SetStatus(basic.CodeDbUpdateErr) // } // return resp.SetStatus(basic.CodeOK, result) // }