2022-03-26 03:25:15 +00:00
|
|
|
package model
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/codinl/go-logger"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
//go:generate goqueryset -in share_card.go
|
|
|
|
// gen:qs
|
|
|
|
type UserShareCardBill struct {
|
|
|
|
Model
|
|
|
|
Uid uint32 `json:"uid" gorm:"index"`
|
|
|
|
BillSn string `json:"bill_sn" gorm:"index"`
|
|
|
|
State string `json:"state" gorm:"index"`
|
|
|
|
SendCardType uint32 `json:"send_card_type"` // 1-送卡 2-邮寄
|
|
|
|
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
|
|
|
ExpressCompany string `json:"express_company"` // 物流公司
|
|
|
|
ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号
|
|
|
|
ExpressNo string `json:"express_no"` // 物流单号
|
|
|
|
SendCardTime time.Time `json:"send_card_time"` // 递送卡时间
|
|
|
|
StockTime time.Time `json:"stock_time"` // 入库时间
|
|
|
|
RetrieveTime time.Time `json:"retrieve_time"` // 收回卡时间 申请收回
|
|
|
|
StockRemovalTime time.Time `json:"stock_removal_time"` // 出库时间
|
|
|
|
Store Store `json:"store" gorm:"-"` // 门店
|
|
|
|
|
|
|
|
BillGames []ShareCardBillGame `json:"bill_games" gorm:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// gen:qs
|
|
|
|
type ShareCardBillGame struct {
|
|
|
|
Model
|
|
|
|
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
|
|
|
Uid uint32 `json:"uid" gorm:"index"`
|
|
|
|
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
|
|
|
BillSn string `json:"bill_sn" gorm:"index"`
|
|
|
|
Count uint32 `json:"count"`
|
|
|
|
State string `json:"state" gorm:"index"`
|
|
|
|
GameCard GameCard `json:"game_card" gorm:"-"` //
|
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
|
|
|
ShareCardBillStateInCheck = "in_check" // 待审核
|
|
|
|
ShareCardBillStateInSendCard = "in_send_card" // 待递送卡
|
|
|
|
ShareCardBillStateCompleted = "completed" // 完成
|
|
|
|
ShareCardBillStateCancel = "cancel" // 取消
|
|
|
|
ShareCardBillStateAuditLose = "check_lose" // 审核失败
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
ShareCardStateInCheck = "in_check" // 待审核
|
|
|
|
ShareCardStateInSendCard = "in_send_card" // 待递送卡
|
|
|
|
ShareCardStateSharing = "sharing" // 共享中
|
|
|
|
ShareCardStateAuditLose = "check_lose" // 审核失败
|
|
|
|
ShareCardStateCancel = "cancel" // 取消
|
|
|
|
)
|
|
|
|
|
|
|
|
// gen:qs
|
|
|
|
type UserShareCard struct {
|
|
|
|
Model
|
|
|
|
Uid uint32 `json:"uid" gorm:"index"`
|
|
|
|
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
|
|
|
BillSn string `json:"bill_sn" gorm:"index"`
|
|
|
|
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
|
|
|
State string `json:"state" gorm:"index"`
|
|
|
|
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
|
|
|
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
|
|
|
ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
|
|
|
|
}
|
|
|
|
|
|
|
|
//type UserShareCardBillInfo struct {
|
|
|
|
// GameCardId uint32 `json:"game_card_id"`
|
|
|
|
// Count uint32 `json:"count"`
|
|
|
|
//}
|
|
|
|
|
|
|
|
func GetUserShareCardBillList(uid uint32, page, pageSize int) ([]UserShareCardBill, int, error) {
|
|
|
|
page = page - 1
|
|
|
|
if page < 0 {
|
|
|
|
page = 0
|
|
|
|
}
|
|
|
|
if pageSize == 0 {
|
|
|
|
pageSize = 10
|
|
|
|
}
|
|
|
|
var shareCardBills []UserShareCardBill
|
|
|
|
qs := NewUserShareCardBillQuerySet(DB).UidEq(uid)
|
|
|
|
|
|
|
|
count, err := qs.Count()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("user share card bill count err:", err)
|
|
|
|
return shareCardBills, 0, err
|
|
|
|
}
|
|
|
|
totalPage := count/pageSize + 1
|
|
|
|
err = qs.OrderDescByID().Offset(page * pageSize).Limit(pageSize).All(&shareCardBills)
|
|
|
|
if err != nil && err != RecordNotFound {
|
|
|
|
logger.Error("user share card bill err:", err)
|
|
|
|
return shareCardBills, 0, err
|
|
|
|
}
|
|
|
|
if len(shareCardBills) == 0 {
|
|
|
|
return shareCardBills, 0, nil
|
|
|
|
}
|
|
|
|
shareCardBills = UserShareCardBillListSetGame(shareCardBills)
|
|
|
|
return shareCardBills, totalPage, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UserShareCardBillListSetGame(list []UserShareCardBill) []UserShareCardBill {
|
|
|
|
billIds := make([]uint32, 0, len(list))
|
|
|
|
for i, _ := range list {
|
|
|
|
billIds = append(billIds, list[i].ID)
|
|
|
|
}
|
|
|
|
if len(billIds) == 0 {
|
|
|
|
return list
|
|
|
|
}
|
|
|
|
billMap := make(map[uint32][]ShareCardBillGame, 0)
|
|
|
|
var games []ShareCardBillGame
|
|
|
|
err := NewShareCardBillGameQuerySet(DB).UserShareCardBillIdIn(billIds...).All(&games)
|
|
|
|
if err != nil && err != RecordNotFound {
|
|
|
|
logger.Error("share card bill err:", err)
|
|
|
|
return list
|
|
|
|
}
|
|
|
|
gameIds := make([]uint32, 0, len(games))
|
|
|
|
for i, _ := range games {
|
|
|
|
gameIds = append(gameIds, games[i].GameCardId)
|
|
|
|
}
|
|
|
|
cardMap, err := GameCardMap(gameIds)
|
|
|
|
for i, _ := range games {
|
|
|
|
v, ok := cardMap[games[i].GameCardId]
|
|
|
|
if ok {
|
|
|
|
games[i].GameCard = v
|
|
|
|
}
|
|
|
|
}
|
2022-04-02 08:40:19 +00:00
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
for i, _ := range games {
|
|
|
|
billMap[games[i].UserShareCardBillId] = append(billMap[games[i].UserShareCardBillId], games[i])
|
|
|
|
}
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("game card map err:", err)
|
|
|
|
return list
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range list {
|
|
|
|
v, ok := billMap[list[i].ID]
|
|
|
|
if ok {
|
|
|
|
list[i].BillGames = v
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return list
|
|
|
|
}
|