package dto import ( "fmt" "github.com/wechatpay-apiv3/wechatpay-go/services/payments/app" "github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi" "hepa-calc-api/api/model" ) // OrderMemberDto 订单-会员 type OrderMemberDto struct { OrderId string `json:"order_id"` // 主键id UserId string `json:"user_id"` // 用户id SystemMemberId string `json:"system_member_id"` // 会员id OrderStatus int `json:"order_status"` // 订单状态(1:待支付 2:已完成 3:已取消) IsDelete int `json:"is_delete"` // 用户删除状态(0:否 1:是) PayChannel int `json:"pay_channel"` // 支付渠道(1:h5支付 2:app支付 3:会员支付) PayStatus int `json:"pay_status"` // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) PayTime *model.LocalTime `json:"pay_time"` // 支付时间 RefundStatus int `json:"refund_status"` // 订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款) OrderNo string `json:"order_no"` // 系统订单编号 EscrowTradeNo string `json:"escrow_trade_no"` // 第三方支付流水号 AmountTotal float64 `json:"amount_total"` // 订单金额 CouponAmountTotal float64 `json:"coupon_amount_total"` // 优惠卷总金额 PaymentAmountTotal float64 `json:"payment_amount_total"` // 实际付款金额 CancelStatus int `json:"cancel_status"` // 取消状态(0:否 1:是) CancelTime *model.LocalTime `json:"cancel_time"` // 订单取消时间 CancelRemarks string `json:"cancel_remarks"` // 取消订单备注 OrderRemarks string `json:"order_remarks"` // 订单备注 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 SystemMember *SystemMemberDto `json:"system_member"` // 会员 } // OrderMemberPayDto 会员订单支付数据 type OrderMemberPayDto struct { OrderId string `json:"order_id"` // 主键id SystemMemberId string `json:"system_member_id"` // 会员id OrderNo string `json:"order_no"` // 系统订单编号 AmountTotal float64 `json:"amount_total"` // 订单金额 CouponAmountTotal float64 `json:"coupon_amount_total"` // 优惠卷总金额 PaymentAmountTotal float64 `json:"payment_amount_total"` // 实际付款金额 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 PrepayJsapi *jsapi.PrepayWithRequestPaymentResponse `json:"prepay_jsapi"` // 预支付交易数据-jsapi PrepayApp *app.PrepayWithRequestPaymentResponse `json:"prepay_app"` // 预支付交易数据-app } // OrderMemberPayStatusDto 会员订单支付状态 type OrderMemberPayStatusDto struct { PayStatus int `json:"pay_status"` // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) PaymentAmountTotal float64 `json:"payment_amount_total"` // 实际付款金额 ValidDate *model.LocalTime `json:"valid_date"` // 到期时间 } // OrderMemberRecentDto 会员订单列表-最近下单 type OrderMemberRecentDto struct { OrderId string `json:"order_id"` // 主键id UserId string `json:"user_id"` // 用户id SystemMemberId string `json:"system_member_id"` // 会员id CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UserName string `json:"user_name"` // 用户名称 UserAvatar string `json:"user_avatar"` // 用户头像 MemberDays uint `json:"member_days"` // 会员天数 TimeDesc string `json:"time_desc"` // 时间描述 } // AddOrderMemberDto 创建会员订单 type AddOrderMemberDto struct { OrderId string `json:"order_id"` // 主键id OrderNo string `json:"order_no"` // 系统订单编号 } // GetOrderMemberListDto 列表 func GetOrderMemberListDto(m []*model.OrderMember) []*OrderMemberDto { // 处理返回值 responses := make([]*OrderMemberDto, len(m)) if len(m) > 0 { for i, v := range m { response := &OrderMemberDto{ OrderId: fmt.Sprintf("%d", v.OrderId), UserId: fmt.Sprintf("%d", v.UserId), SystemMemberId: fmt.Sprintf("%d", v.SystemMemberId), OrderStatus: v.OrderStatus, IsDelete: v.IsDelete, PayChannel: v.PayChannel, PayStatus: v.PayStatus, PayTime: v.PayTime, RefundStatus: v.RefundStatus, OrderNo: v.OrderNo, EscrowTradeNo: v.EscrowTradeNo, AmountTotal: v.AmountTotal, CouponAmountTotal: v.CouponAmountTotal, PaymentAmountTotal: v.PaymentAmountTotal, CancelStatus: v.CancelStatus, CancelTime: v.CancelTime, CancelRemarks: v.CancelRemarks, OrderRemarks: v.OrderRemarks, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 加载会员数据 if v.SystemMember != nil { response = response.LoadSystemMember(v.SystemMember) } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // GetOrderMemberPayDto 获取会员订单支付数据 func GetOrderMemberPayDto(m *model.OrderMember) *OrderMemberPayDto { return &OrderMemberPayDto{ OrderId: fmt.Sprintf("%d", m.OrderId), SystemMemberId: fmt.Sprintf("%d", m.SystemMemberId), OrderNo: m.OrderNo, AmountTotal: m.AmountTotal, CouponAmountTotal: m.CouponAmountTotal, PaymentAmountTotal: m.PaymentAmountTotal, CreatedAt: m.CreatedAt, } } // GetOrderMemberPayStatus 获取会员订单支付状态 func GetOrderMemberPayStatus(m *model.OrderMember) *OrderMemberPayStatusDto { return &OrderMemberPayStatusDto{ PayStatus: m.PayStatus, PaymentAmountTotal: m.PaymentAmountTotal, } } // GetOrderMemberRecentListDto 获取会员订单列表-最近下单 func GetOrderMemberRecentListDto(m []*model.OrderMember) []*OrderMemberRecentDto { // 处理返回值 responses := make([]*OrderMemberRecentDto, len(m)) if len(m) > 0 { for i, v := range m { response := &OrderMemberRecentDto{ OrderId: fmt.Sprintf("%d", v.OrderId), UserId: fmt.Sprintf("%d", v.UserId), SystemMemberId: fmt.Sprintf("%d", v.SystemMemberId), CreatedAt: v.CreatedAt, } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // LoadSystemMember 加载会员数据 func (r *OrderMemberDto) LoadSystemMember(m *model.SystemMember) *OrderMemberDto { if m != nil { r.SystemMember = GetSystemMemberDto(m) } return r } // LoadValidDate 加载到期时间 func (r *OrderMemberPayStatusDto) LoadValidDate(m *model.LocalTime) *OrderMemberPayStatusDto { if m != nil { r.ValidDate = m } return r }