174 lines
7.6 KiB
Go
174 lines
7.6 KiB
Go
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
|
||
}
|