123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- package model
- import (
- "encoding/json"
- "go-common/app/common/openplatform/encoding"
- "go-common/app/service/openplatform/ticket-sales/api/grpc/type"
- "go-common/app/service/openplatform/ticket-sales/api/grpc/v1"
- "go-common/library/time"
- "github.com/gogo/protobuf/types"
- )
- //OrderMain 订单主表结构
- type OrderMain struct {
- OrderID int64 `json:"order_id"`
- UID string `json:"uid"`
- OrderType int16 `json:"order_type"`
- ItemID int64 `json:"item_id"`
- ItemInfo *_type.OrderItemInfo `json:"item_info"`
- Count int64 `json:"count"`
- TotalMoney int64 `json:"total_money"`
- PayMoney int64 `json:"pay_money"`
- ExpressFee int64 `json:"express_fee"`
- PayChannel int16 `json:"pay_channel"`
- PayTime int64 `json:"pay_time"`
- Source string `json:"source"`
- Status int16 `json:"status"`
- SubStatus int16 `json:"sub_status"`
- RefundStatus int16 `json:"refund_status"`
- IsDeleted int16 `json:"is_deleted"`
- CTime time.Time `json:"ctime"`
- MTime time.Time `json:"mtime"`
- }
- //OrderMainQuerier 订单表查询参数
- type OrderMainQuerier v1.ListOrdersRequest
- // OrderDetail 订单详情表信息
- type OrderDetail struct {
- OrderID int64 `json:"order_id"`
- Buyer string `json:"buyer"`
- Tel string `json:"tel"`
- PersonalID string `json:"personal_id"`
- ExpressCO string `json:"express_co"`
- ExpressNO string `json:"express_no"`
- ExpressType int16 `json:"express_type"`
- Remark string `json:"remark"`
- DeviceType int16 `json:"device_type"`
- IP []byte `json:"ip"`
- Coupon *_type.OrderCoupon `json:"coupon"`
- DeliverDetail *_type.OrderDeliver `json:"deliver_detail"`
- Detail *_type.OrderExtra `json:"detail"`
- MSource string `json:"msource"`
- CTime time.Time `json:"-"`
- MTime time.Time `json:"-"`
- }
- //OrderSKU order_sku表结构
- type OrderSKU _type.OrderSKU
- //OrderPayCharge 订单支付表结构
- type OrderPayCharge _type.OrderPayCharge
- //GetFields 获取order_main表所有字段,参数是需要排除的字段
- func (o *OrderMain) GetFields(except *types.FieldMask) []string {
- fields := []string{
- "order_id", "uid", "order_type", "item_id", "item_info",
- "count", "total_money", "express_fee", "pay_money", "pay_channel",
- "pay_time", "source", "status", "sub_status", "refund_status",
- "is_deleted", "ctime", "mtime",
- }
- if except != nil {
- lp := len(except.Paths)
- mExcept := make(map[string]bool, lp)
- for _, v := range except.Paths {
- mExcept[v] = true
- }
- res := make([]string, len(fields)-lp)
- i := 0
- for _, v := range fields {
- if ok := mExcept[v]; !ok {
- res[i] = v
- i++
- }
- }
- return res
- }
- return fields
- }
- //GetFields 获取order_detail字段名称
- func (o *OrderDetail) GetFields(except *types.FieldMask) []string {
- fields := []string{
- "order_id", "buyer", "tel", "personal_id", "express_co",
- "express_no", "express_type", "remark", "device_type", "ip",
- "coupon", "deliver_detail", "detail", "msource", "ctime",
- "mtime",
- }
- if except != nil {
- lp := len(except.Paths)
- mExcept := make(map[string]bool, lp)
- for _, v := range except.Paths {
- mExcept[v] = true
- }
- res := make([]string, len(fields)-lp)
- i := 0
- for _, v := range fields {
- if ok := mExcept[v]; !ok {
- res[i] = v
- i++
- }
- }
- return res
- }
- return fields
- }
- //GetFields 获取order_sku对象的字段名
- func (o *OrderSKU) GetFields(except *types.FieldMask) []string {
- fields := []string{
- "order_id", "sku_id", "count", "origin_price", "price",
- "seat_ids", "ticket_type", "discounts", "ctime", "mtime",
- }
- if except != nil {
- lp := len(except.Paths)
- mExcept := make(map[string]bool, lp)
- for _, v := range except.Paths {
- mExcept[v] = true
- }
- res := make([]string, len(fields)-lp)
- i := 0
- for _, v := range fields {
- if ok := mExcept[v]; !ok {
- res[i] = v
- i++
- }
- }
- return res
- }
- return fields
- }
- //GetFields 获取order_pay_charge对象的字段名
- func (o *OrderPayCharge) GetFields(except *types.FieldMask) []string {
- fields := []string{
- "order_id", "charge_id", "channel", "paid", "refunded",
- "ctime", "mtime",
- }
- if except != nil {
- lp := len(except.Paths)
- mExcept := make(map[string]bool, lp)
- for _, v := range except.Paths {
- mExcept[v] = true
- }
- res := make([]string, len(fields)-lp)
- i := 0
- for _, v := range fields {
- if ok := mExcept[v]; !ok {
- res[i] = v
- i++
- }
- }
- return res
- }
- return fields
- }
- //GetPtrs 获取order_main对象指针
- // 如果设置vptr参数,会把struct指针替换成string指针,并在vptr保存原struct指针(as value)和它在返回数组中的下标(as key)
- func (o *OrderMain) GetPtrs(fields *types.FieldMask, vptr map[int]interface{}) []interface{} {
- ptrs := map[string]interface{}{
- "order_id": &o.OrderID,
- "uid": &o.UID,
- "order_type": &o.OrderType,
- "item_id": &o.ItemID,
- "item_info": &o.ItemInfo,
- "count": &o.Count,
- "total_money": &o.TotalMoney,
- "express_fee": &o.ExpressFee,
- "pay_money": &o.PayMoney,
- "pay_channel": &o.PayChannel,
- "pay_time": &o.PayTime,
- "source": &o.Source,
- "status": &o.Status,
- "sub_status": &o.SubStatus,
- "refund_status": &o.RefundStatus,
- "is_deleted": &o.IsDeleted,
- "ctime": &o.CTime,
- "mtime": &o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if vptr != nil && f == "item_info" {
- var s string
- ret[i] = &s
- vptr[i] = ptrs[f]
- } else {
- ret[i] = ptrs[f]
- }
- i++
- }
- return ret
- }
- //GetPtrs 获取order_detail对象指针
- func (o *OrderDetail) GetPtrs(fields *types.FieldMask, vptr map[int]interface{}) []interface{} {
- ptrs := map[string]interface{}{
- "order_id": &o.OrderID,
- "buyer": &o.Buyer,
- "tel": &o.Tel,
- "personal_id": &o.PersonalID,
- "express_co": &o.ExpressCO,
- "express_no": &o.ExpressNO,
- "express_type": &o.ExpressType,
- "remark": &o.Remark,
- "device_type": &o.DeviceType,
- "ip": &o.IP,
- "coupon": &o.Coupon,
- "deliver_detail": &o.DeliverDetail,
- "detail": &o.Detail,
- "msource": &o.MSource,
- "ctime": &o.CTime,
- "mtime": &o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if vptr != nil && (f == "coupon" || f == "deliver_detail" || f == "detail") {
- var s string
- ret[i] = &s
- vptr[i] = ptrs[f]
- } else {
- ret[i] = ptrs[f]
- }
- i++
- }
- return ret
- }
- //GetPtrs 获取order_sku对象的字段指针
- func (o *OrderSKU) GetPtrs(fields *types.FieldMask, vptr map[int]interface{}) []interface{} {
- ptrs := map[string]interface{}{
- "order_id": &o.OrderID,
- "sku_id": &o.SKUID,
- "count": &o.Count,
- "origin_price": &o.OriginPrice,
- "price": &o.Price,
- "seat_ids": &o.SeatIDs,
- "ticket_type": &o.TicketType,
- "discounts": &o.Discounts,
- "ctime": &o.CTime,
- "mtime": &o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if vptr != nil && (f == "discounts" || f == "seat_ids") {
- var s string
- ret[i] = &s
- vptr[i] = ptrs[f]
- } else {
- ret[i] = ptrs[f]
- }
- i++
- }
- return ret
- }
- //GetPtrs 获取order_pay_charge对象的字段指针
- func (o *OrderPayCharge) GetPtrs(fields *types.FieldMask, vptr map[int]interface{}) []interface{} {
- ptrs := map[string]interface{}{
- "order_id": &o.OrderID,
- "charge_id": &o.ChargeID,
- "channel": &o.Channel,
- "paid": &o.Paid,
- "refunded": &o.Refunded,
- "ctime": &o.CTime,
- "mtime": &o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if vptr != nil && f == "discounts" {
- var s string
- ret[i] = &s
- vptr[i] = ptrs[f]
- } else {
- ret[i] = ptrs[f]
- }
- i++
- }
- return ret
- }
- //GetVals 获取order_main对象里的值
- func (o *OrderMain) GetVals(fields *types.FieldMask, asString bool) []interface{} {
- vals := map[string]interface{}{
- "order_id": o.OrderID,
- "uid": o.UID,
- "order_type": o.OrderType,
- "item_id": o.ItemID,
- "item_info": o.ItemInfo,
- "count": o.Count,
- "total_money": o.TotalMoney,
- "express_fee": o.ExpressFee,
- "pay_money": o.PayMoney,
- "pay_channel": o.PayChannel,
- "pay_time": o.PayTime,
- "source": o.Source,
- "status": o.Status,
- "sub_status": o.SubStatus,
- "refund_status": o.RefundStatus,
- "is_deleted": o.IsDeleted,
- "ctime": o.CTime,
- "mtime": o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if asString && f == "item_info" {
- if b, err := json.Marshal(vals[f]); err == nil {
- ret[i] = string(b)
- }
- } else {
- ret[i] = vals[f]
- }
- i++
- }
- return ret
- }
- //GetVals 获取order_detail对象字段的值
- func (o *OrderDetail) GetVals(fields *types.FieldMask, asString bool) []interface{} {
- vals := map[string]interface{}{
- "order_id": o.OrderID,
- "buyer": o.Buyer,
- "tel": o.Tel,
- "personal_id": o.PersonalID,
- "express_co": o.ExpressCO,
- "express_no": o.ExpressNO,
- "express_type": o.ExpressType,
- "remark": o.Remark,
- "device_type": o.DeviceType,
- "ip": o.IP,
- "coupon": o.Coupon,
- "deliver_detail": o.DeliverDetail,
- "detail": o.Detail,
- "msource": o.MSource,
- "ctime": o.CTime,
- "mtime": o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if asString && (f == "coupon" || f == "deliver_detail" || f == "detail") {
- if b, err := json.Marshal(vals[f]); err == nil {
- ret[i] = string(b)
- }
- } else {
- ret[i] = vals[f]
- }
- i++
- }
- return ret
- }
- //GetVals 获取order_sku字段的值
- func (o *OrderSKU) GetVals(fields *types.FieldMask, asString bool) []interface{} {
- vals := map[string]interface{}{
- "order_id": o.OrderID,
- "sku_id": o.SKUID,
- "count": o.Count,
- "origin_price": o.OriginPrice,
- "price": o.Price,
- "seat_ids": o.SeatIDs,
- "ticket_type": o.TicketType,
- "discounts": o.Discounts,
- "ctime": o.CTime,
- "mtime": o.MTime,
- }
- if fields == nil {
- fields = &types.FieldMask{Paths: o.GetFields(nil)}
- }
- ret := make([]interface{}, len(fields.Paths))
- i := 0
- for _, f := range fields.Paths {
- if asString && (f == "discounts" || f == "seat_ids") {
- if b, err := json.Marshal(vals[f]); err == nil {
- ret[i] = string(b)
- }
- } else {
- ret[i] = vals[f]
- }
- i++
- }
- return ret
- }
- func (o *OrderDetail) getEncryptPtrs() []*string {
- res := make([]*string, 3)
- res[0] = &o.Tel
- res[1] = &o.PersonalID
- if o.DeliverDetail != nil {
- res[2] = &o.DeliverDetail.Tel
- }
- return res
- }
- //Encrypt 加密order_detail的字段
- func (o *OrderDetail) Encrypt(c *encoding.EncryptConfig) {
- for _, p := range o.getEncryptPtrs() {
- if p != nil {
- s, _ := encoding.Encrypt(*p, c)
- *p = s
- }
- }
- }
- //Decrypt 解密order_detail字段
- func (o *OrderDetail) Decrypt(c *encoding.EncryptConfig) {
- for _, p := range o.getEncryptPtrs() {
- if p != nil {
- s, _ := encoding.Decrypt(*p, c)
- *p = s
- }
- }
- }
- //GetSettleOrdersRequest 获取结算订单请求
- type GetSettleOrdersRequest struct {
- Date string `form:"date" validate:"required"`
- Ref byte `form:"ref"`
- ExtParams string `form:"extParams" validate:"omitempty,numeric"`
- PageSize int `form:"pagesize"`
- }
- //SettleOrder 获取结算订单返回
- type SettleOrder struct {
- ID int64 `json:"-"`
- OrderID int64 `json:"order_id"`
- RefID int64 `json:"ref_id"`
- RefundApplyTime time.Time `json:"-"`
- }
- //SettleOrders 获取结算订单返回
- type SettleOrders struct {
- Data []*SettleOrder `json:"data"`
- ExtParams string `json:"extParams"`
- }
|