mh_server/model/share_card.go
2022-04-04 19:03:22 +08:00

777 lines
27 KiB
Go

package model
import (
"github.com/codinl/go-logger"
"mh-server/lib/utils"
"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:"-"` // 门店
Remark string `json:"remark"`
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:"-"` //
ShareCards []UserShareCard `json:"share_cards" gorm:"-"`
}
const (
ShareCardBillStateInCheck = "in_check" // 待审核
ShareCardBillStateInSendCard = "in_send_card" // 待递送卡
ShareCardBillStateSentCard = "sent_card" // 已递送卡
ShareCardBillStateCompleted = "completed" // 完成
ShareCardBillStateCancel = "cancel" // 取消
ShareCardBillStateAuditLose = "check_lose" // 审核失败
)
const (
ShareCardStateInCheck = "in_check" // 待审核
ShareCardStateInSendCard = "in_send_card" // 待递送卡
ShareCardStateSentCard = "sent_card" // 已递送卡
ShareCardStateSharing = "sharing" // 共享中
ShareCardStateAuditLose = "check_lose" // 审核失败
ShareCardStateCancel = "cancel" // 取消
ShareCardStateRetrieve = "retrieve" // 收回
)
// 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"`
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
ProfitState uint32 `json:"profit_state"` // 1-未生效 2-生效
TotalVm uint32 `json:"total_vm"` // 累计积分
RetrieveSerialNumber string `json:"retrieve_serial_number" gorm:"index"` // 收卡编号
RetrieveGameCardGoodsId uint32 `json:"retrieve_game_card_goods_id" gorm:"index"` // 收回卡id
GameCard GameCard `json:"game_card" gorm:"-"`
}
// gen:qs
type ShareCardGameVm struct {
Model
GameCardId uint32 `json:"game_card_id" gorm:"index"`
HoldCardCount uint32 `json:"hold_card_count"` //
StockCardCount uint32 `json:"stock_card_count"` //
TotalCardCount uint32 `json:"total_card_count"`
CardProfit uint32 `json:"card_profit"`
Vm uint32 `json:"vm"` // 发放积分
ProvideVm uint32 `json:"provide_vm"` // 发放积分
ProvideDate string `json:"provide_date" gorm:"index"`
//share_card_game_vm
}
// 用户卡积分记录
// gen:qs
type UserShareCardVm struct {
Model
ShareCardGameVmId uint32 `json:"share_card_game_vm_id" gorm:"index"`
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"`
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
CardProfit uint32 `json:"card_profit"`
Vm uint32 `json:"vm"` // 发放积分
ProvideDate string `json:"provide_date"`
}
// 用户积分记录
// gen:qs
type ShareCardDateVm struct {
Model
Uid uint32 `json:"uid" gorm:"index"`
Vm uint32 `json:"vm"` // 发放积分
TotalVm uint32 `json:"total_vm"` // 用户累计获取积分
ProvideDate string `json:"provide_date" gorm:"index"` // 收益日期
}
// 总积分记录
// gen:qs
type ShareCardVmRecord struct {
Model
TotalVm uint32 `json:"total_vm"`
ProvideVm uint32 `json:"provide_vm"` // 总发放积分
ProvideDate string `json:"provide_date" gorm:"index"` // 发放收益时间
//share_card_vm_record
}
//type UserShareCardBillInfo struct {
// GameCardId uint32 `json:"game_card_id"`
// Count uint32 `json:"count"`
//}
// 用户收回卡
// gen:qs
type ShareCardRetrieve struct {
Model
Uid uint32 `json:"uid" gorm:"index"`
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 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"` // 物流单号
StockRemovalTime time.Time `json:"stock_removal_time"` // 出库时间
StockTime time.Time `json:"stock_time"` // 入库时间
PayState uint32 `json:"pay_state"` // 1-未支付 2-已支付
PayAmount uint32 `json:"pay_amount"` // 支付金额
Remark string `json:"remark"`
OrderSn string `json:"order_sn" gorm:"index"` // 订单编号
AddressId uint32 `json:"address_id" gorm:"index"` // 收货地址
RefundOrderSn string `json:"refund_order_sn" gorm:"index"` // 订单编号退费
PickupCode string `json:"pickup_code"` // 取货码
Store Store `json:"store" gorm:"-"`
UserAddress UserAddress `json:"user_address" gorm:"-"`
ShareCardRetrieveCards []ShareCardRetrieveCard `json:"share_card_retrieve_cards" gorm:"-"`
//TotalVm uint32 `json:"total_vm"` // 累计积分
//ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
//GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
//UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
//BillSn string `json:"bill_sn" gorm:"index"`
//GameCardId uint32 `json:"game_card_id" gorm:"index"`
//SerialNumber string `json:"serial_number" gorm:"index"` // 编号
//GameCard GameCard `json:"game_card" gorm:"-"`
}
const (
RetrieveStateInCheck = "in_check" // 待审核
RetrieveStateCheckLose = "check_lose" // 审核失败
RetrieveStateOutStock = "out_stock" // 暂无库存
RetrieveStateInSendCard = "in_send_card" // 待发卡
RetrieveStateInPickCard = "in_pick_card" // 待取卡
RetrieveStateSentCard = "sent_card" // 已发卡
RetrieveStateReceivedCard = "received_card" // 已收卡
RetrieveStateCancel = "cancel" // 取消
)
// gen:qs
type ShareCardRetrieveCard struct {
Model
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id" gorm:"index"`
UserShareCardId uint32 `json:"user_share_card_id" gorm:"index"` // 用户共享卡收回
Uid uint32 `json:"uid" gorm:"index"`
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
BillSn string `json:"bill_sn" gorm:"index"`
GameCardId uint32 `json:"game_card_id" gorm:"index"`
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡 2-邮寄
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
Remark string `json:"remark"`
RetrieveSerialNumber string `json:"retrieve_serial_number" gorm:"index"` // 收卡编号
RetrieveGameCardGoodsId uint32 `json:"retrieve_game_card_goods_id" gorm:"index"` // 收回卡id
GameCard GameCard `json:"game_card" gorm:"-"`
Store Store `json:"store" gorm:"-"`
ShareCardRetrieve ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
//TotalVm uint32 `json:"total_vm"` // 累计积分
//ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
// share_card_retrieve_card
}
func GetUserShareCardBillList(uid uint32, page, pageSize int, state string) ([]UserShareCardBill, int, error) {
page = page - 1
if page < 0 {
page = 0
}
if pageSize == 0 {
pageSize = 10
}
var shareCardBills []UserShareCardBill
qs := NewUserShareCardBillQuerySet(DB).UidEq(uid)
if state != "" {
qs = qs.StateEq(state)
}
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 GetUserShareCardBill(uid uint32, billId uint32) (UserShareCardBill, error) {
var shareCardBill UserShareCardBill
err := NewUserShareCardBillQuerySet(DB).IDEq(billId).One(&shareCardBill)
if err != nil {
logger.Error("user share card bill err:", err)
return shareCardBill, err
}
var store Store
err = NewStoreQuerySet(DB).IDEq(shareCardBill.StoreId).One(&store)
if err != nil {
logger.Error("store err:", err)
return shareCardBill, err
}
shareCardBill.Store = store
list := []UserShareCardBill{shareCardBill}
list = UserShareCardBillListSetGame(list)
if len(list) == 0 {
return shareCardBill, nil
}
err = list[0].SetShareCard()
if err != nil {
logger.Error("set share card err:", err)
return shareCardBill, err
}
return list[0], 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
}
}
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
}
func (m *UserShareCardBill) SetShareCard() error {
var userShareCards []UserShareCard
err := NewUserShareCardQuerySet(DB).UserShareCardBillIdEq(m.ID).All(&userShareCards)
if err != nil {
logger.Error("user share card err:", err)
return err
}
shareCardMap := make(map[uint32][]UserShareCard, 0)
for i, _ := range userShareCards {
shareCardMap[userShareCards[i].GameCardId] = append(shareCardMap[userShareCards[i].GameCardId], userShareCards[i])
}
if len(m.BillGames) == 0 {
logger.Error("bill games is nil")
return nil
}
for i, _ := range m.BillGames {
v, ok := shareCardMap[m.BillGames[i].GameCardId]
if ok {
m.BillGames[i].ShareCards = v
}
}
return nil
}
func GetUserShareCardMyCardList(uid uint32, page, pageSize int, state string) ([]UserShareCard, int, error) {
page = page - 1
if page < 0 {
page = 0
}
if pageSize == 0 {
pageSize = 10
}
states := []string{state}
if state == "" {
states = []string{ShareCardStateInCheck, ShareCardStateSharing, ShareCardStateRetrieve}
}
var shareCards []UserShareCard
qs := NewUserShareCardQuerySet(DB).UidEq(uid).StateIn(states...)
count, err := qs.Count()
if err != nil {
logger.Error("user share card bill count err:", err)
return shareCards, 0, err
}
totalPage := count/pageSize + 1
err = qs.OrderDescByID().Offset(page * pageSize).Limit(pageSize).All(&shareCards)
if err != nil && err != RecordNotFound {
logger.Error("user share card bill err:", err)
return shareCards, 0, err
}
if len(shareCards) == 0 {
return shareCards, 0, nil
}
shareCards = UserShareCardListSetGame(shareCards)
return shareCards, totalPage, nil
}
func UserShareCardListSetGame(list []UserShareCard) []UserShareCard {
gameIds := make([]uint32, 0, len(list))
for i, _ := range list {
gameIds = append(gameIds, list[i].GameCardId)
}
cardMap, err := GameCardMap(gameIds)
if err != nil {
logger.Error("game card map err:", err)
return list
}
for i, _ := range list {
v, ok := cardMap[list[i].GameCardId]
if ok {
list[i].GameCard = v
}
}
return list
}
func GetUserShareCardVmList(uid uint32, page, pageSize int, goodsId uint32) ([]UserShareCardVm, int, error) {
page = page - 1
if page < 0 {
page = 0
}
if pageSize == 0 {
pageSize = 10
}
var shareCardVms []UserShareCardVm
qs := NewUserShareCardVmQuerySet(DB).UidEq(uid).GameCardGoodsIdEq(goodsId)
count, err := qs.Count()
if err != nil {
logger.Error("user share card bill count err:", err)
return shareCardVms, 0, err
}
totalPage := count/pageSize + 1
err = qs.OrderDescByID().Offset(page * pageSize).Limit(pageSize).All(&shareCardVms)
if err != nil && err != RecordNotFound {
logger.Error("user share card bill err:", err)
return shareCardVms, 0, err
}
//if len(shareCardVms) == 0 {
// return shareCardVms, 0, nil
//}
//shareCards = UserShareCardListSetGame(shareCards)
return shareCardVms, totalPage, nil
}
func GetUserShareCardDateVm(uid uint32) (ShareCardDateVm, error) {
var cardDateVm ShareCardDateVm
err := NewShareCardDateVmQuerySet(DB).UidEq(uid).ProvideDateEq(utils.ZeroDateFormat(-1)).One(&cardDateVm)
if err != nil && err != RecordNotFound {
logger.Error("share card date vm err:", err)
}
return cardDateVm, nil
}
type ShareCardRetrieveCreateReq struct {
SerialNumbers []string `json:"serial_numbers"`
StoreId uint32 `json:"store_id"` // 门店id
RetrieveCardType uint32 `json:"retrieve_card_type"`
AddressId uint32 `json:"address_id"` // 收货地址
Amount uint32 `json:"amount"` // 金额
Uid uint32 `json:"uid"`
}
func (m *ShareCardRetrieveCreateReq) RetrieveCreate() (*ShareCardRetrieve, error) {
var userShareCards []UserShareCard
err := NewUserShareCardQuerySet(DB).SerialNumberIn(m.SerialNumbers...).All(&userShareCards)
if err != nil {
logger.Error("user share card err:", err)
return nil, err
}
//gameIds := make([]uint64, 0)
//for i, _ := range userShareCards {
// gameIds = append(gameIds, uint64(userShareCards[i].GameCardId))
//}
//var gameCardGoodsStocks []GameCardGoodsStock
//err = NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(m.StoreId)).GameCardIdIn(gameIds...).All(&gameCardGoodsStocks)
//if err != nil {
// logger.Error("game card goods stock err:", err)
// return err
//}
//var gameGoods []GameCardGoods
//err = NewGameCardGoodsQuerySet(DB).GameCardIdIn(gameIds...).StatusEq(1).OrderAscByID().All(&gameGoods)
//if err != nil && err != RecordNotFound {
// logger.Error("game card goods err:", err)
// return err
//}
payState := uint32(1)
if m.RetrieveCardType == 1 {
payState = 2
}
begin := DB.Begin()
retrieve := &ShareCardRetrieve{
Uid: m.Uid,
RetrieveCardType: m.RetrieveCardType,
StoreId: m.StoreId,
State: RetrieveStateInCheck,
OrderSn: GetShareCardRetrieveOrderSn(),
PayState: payState,
AddressId: m.AddressId,
PayAmount: m.Amount,
PickupCode: GetShareCardRetrievePickupCode(),
}
err = begin.Create(&retrieve).Error
if err != nil {
logger.Error("create share card retrieve err:", err)
return retrieve, err
}
for i, _ := range userShareCards {
card := &ShareCardRetrieveCard{
ShareCardRetrieveId: retrieve.ID,
UserShareCardId: userShareCards[i].ID,
Uid: m.Uid,
SerialNumber: userShareCards[i].SerialNumber,
State: RetrieveStateInCheck,
BillSn: userShareCards[i].BillSn,
GameCardId: userShareCards[i].GameCardId,
RetrieveCardType: m.RetrieveCardType,
GameCardGoodsId: userShareCards[i].GameCardGoodsId,
UserShareCardBillId: userShareCards[i].ShareCardBillGameId,
StoreId: m.StoreId,
}
err = begin.Create(&card).Error
if err != nil {
logger.Error("create share card retrieve card err:", err)
return retrieve, err
}
}
err = begin.Commit().Error
if err != nil {
logger.Error("commit err:", err)
return retrieve, err
}
return retrieve, nil
}
//func GetUserCardBySerialNumber(serialNumber string, list []GameCardGoods) (*GameCardGoods, bool) {
// for i, _ := range list {
// if list[i].SerialNumber == serialNumber {
// return &list[i], true
// }
// }
// return nil, false
//}
//func SetUserCardSerialNumber(storeId uint32, list []UserShareCard) ([]UserShareCard, error) {
// for i, _ := range list {
// var goods GameCardGoods
// err := NewGameCardGoodsQuerySet(DB).StoreIdEq(uint64(storeId)).SerialNumberEq(list[i].SerialNumber).
// StatusEq(1).One(&goods)
// if err != nil && err != RecordNotFound {
// logger.Error("game card goods err:", err)
// return list, err
// }
// if goods.ID == list[i].GameCardGoodsId {
// list[i].SerialNumber = goods.SerialNumber
// list[i].GameCardGoodsIdRetrieve = goods.ID
// }
// }
// return list, nil
//}
//
//func SetRandomCardSerialNumber(storeId uint32, list []UserShareCard) ([]UserShareCard, error) {
// for i, _ := range list {
// var goods GameCardGoods
// err := NewGameCardGoodsQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(list[i].GameCardId)).
// StatusEq(1).OrderAscByID().Limit(1).One(&goods)
// if err != nil && err != RecordNotFound {
// logger.Error("game card goods err:", err)
// return list, err
// }
// list[i].SerialNumber = goods.SerialNumber
// list[i].GameCardGoodsIdRetrieve = goods.ID
// }
// return list, nil
//}
type ShareCardRetrieveListReq struct {
Uid uint32 `json:"uid"`
State string `json:"state"`
Page int `json:"cur_page"`
PageSize int `json:"page_size"`
}
func (m *ShareCardRetrieveListReq) List() ([]ShareCardRetrieve, int, error) {
var retrieveCards []ShareCardRetrieve
qs := NewShareCardRetrieveQuerySet(DB).PayStateEq(2)
if m.State != "" {
qs = qs.StateEq(m.State)
}
page := m.Page - 1
if page < 0 {
page = 0
}
if m.PageSize == 0 {
m.PageSize = 10
}
count, err := qs.Count()
if err != nil {
logger.Error("user share card bill count err:", err)
return retrieveCards, 0, err
}
totalPage := count/m.PageSize + 1
err = qs.OrderDescByID().Offset(page * m.PageSize).Limit(m.PageSize).All(&retrieveCards)
if err != nil && err != RecordNotFound {
logger.Error("user share card bill err:", err)
return retrieveCards, 0, err
}
if len(retrieveCards) == 0 {
return retrieveCards, totalPage, nil
}
retrieveCards = ShareCardRetrieveListSetGames(retrieveCards)
return retrieveCards, totalPage, nil
}
func ShareCardRetrieveListSetGames(list []ShareCardRetrieve) []ShareCardRetrieve {
gameIds := make([]uint32, 0, len(list))
retrieveIds := make([]uint32, 0, len(list))
for i, _ := range list {
//gameIds = append(gameIds, list[i].GameCardId)
retrieveIds = append(retrieveIds, list[i].ID)
}
if len(retrieveIds) == 0 {
return list
}
var cards []ShareCardRetrieveCard
err := NewShareCardRetrieveCardQuerySet(DB).ShareCardRetrieveIdIn(retrieveIds...).All(&cards)
if err != nil {
logger.Error("share card retrieve card err:", err)
return list
}
for i, _ := range cards {
gameIds = append(gameIds, cards[i].GameCardId)
}
if len(gameIds) == 0 {
logger.Error("game ids err:", err)
return list
}
gameMap, err := GameCardMap(gameIds)
if err != nil {
logger.Error("game card map err:", err)
return list
}
for i, _ := range cards {
v, ok := gameMap[cards[i].GameCardId]
if ok {
cards[i].GameCard = v
}
}
cardsMap := make(map[uint32][]ShareCardRetrieveCard, 0)
for i, _ := range cards {
cardsMap[cards[i].ShareCardRetrieveId] = append(
cardsMap[cards[i].ShareCardRetrieveId], cards[i])
}
//retrieveMap, err := GetShareCardRetrieveMap(retrieveIds)
//if err != nil {
// logger.Error("get share card retrieve map err:", err)
// return list
//}
for i, _ := range list {
v, ok1 := cardsMap[list[i].ID]
if ok1 {
list[i].ShareCardRetrieveCards = v
}
//retrieve, ok2 := retrieveMap[list[i].ShareCardRetrieveId]
//if ok2 {
// list[i].ShareCardRetrieve = retrieve
//}
}
return list
}
func ShareCardRetrieveCardListSetGame(list []ShareCardRetrieveCard) []ShareCardRetrieveCard {
gameIds := make([]uint32, 0, len(list))
retrieveIds := make([]uint32, 0, len(list))
for i, _ := range list {
gameIds = append(gameIds, list[i].GameCardId)
retrieveIds = append(retrieveIds, list[i].ShareCardRetrieveId)
}
cardMap, err := GameCardMap(gameIds)
if err != nil {
logger.Error("game card map err:", err)
return list
}
for i, _ := range list {
v, ok1 := cardMap[list[i].GameCardId]
if ok1 {
list[i].GameCard = v
}
}
return list
}
func GetShareCardRetrieveMap(ids []uint32) (map[uint32]ShareCardRetrieve, error) {
retrieveMap := make(map[uint32]ShareCardRetrieve, 0)
if len(ids) == 0 {
return retrieveMap, nil
}
var retrieves []ShareCardRetrieve
err := NewShareCardRetrieveQuerySet(DB).IDIn(ids...).All(&retrieves)
if err != nil {
logger.Error("share card retrieve err:", err)
return retrieveMap, err
}
for i, _ := range retrieves {
retrieveMap[retrieves[i].ID] = retrieves[i]
}
return retrieveMap, nil
}
func GetShareCardRetrieveInfo(retrieveId uint32) (ShareCardRetrieve, error) {
var retrieve ShareCardRetrieve
err := NewShareCardRetrieveQuerySet(DB).IDEq(retrieveId).One(&retrieve)
if err != nil {
logger.Error("share card retrieve err:", err)
return retrieve, err
}
var cards []ShareCardRetrieveCard
err = NewShareCardRetrieveCardQuerySet(DB).ShareCardRetrieveIdEq(retrieveId).All(&cards)
if err != nil {
logger.Error("share card retrieve card err:", err)
return retrieve, err
}
retrieve.ShareCardRetrieveCards = ShareCardRetrieveCardListSetGame(cards)
err = retrieve.SetStore()
if err != nil {
logger.Error("store err:", err)
return retrieve, err
}
err = retrieve.SetUserAddress()
if err != nil {
logger.Error("user address err:", err)
return retrieve, err
}
return retrieve, nil
}
func (m *ShareCardRetrieve) SetStore() error {
err := NewStoreQuerySet(DB).IDEq(m.StoreId).One(&m.Store)
if err != nil && err != RecordNotFound {
logger.Error("set store err:", err)
return err
}
return nil
}
func (m *ShareCardRetrieve) SetUserAddress() error {
err := NewUserAddressQuerySet(DB).IDEq(m.AddressId).One(&m.UserAddress)
if err != nil && err != RecordNotFound {
logger.Error("set store err:", err)
return err
}
return nil
}
// 用户收回卡
//// gen:qs
//type ShareCardRetrieve struct {
// Model
// Uid uint32 `json:"uid" gorm:"index"`
// State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
// RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 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"` // 物流单号
// StockRemovalTime time.Time `json:"stock_removal_time"` // 出库时间
// StockTime time.Time `json:"stock_time"` // 入库时间
// Remark string `json:"remark"`
//
// Store Store `json:"store" gorm:"-"`
//}
//
//// gen:qs
//type ShareCardRetrieveCard struct {
// Model
// ShareCardRetrieveId uint32 `json:"share_card_retrieve_id" gorm:"index"`
// UserShareCardId uint32 `json:"user_share_card_id" gorm:"index"` // 用户共享卡收回
// Uid uint32 `json:"uid" gorm:"index"`
// SerialNumber string `json:"serial_number" gorm:"index"` // 编号
// State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
// BillSn string `json:"bill_sn" gorm:"index"`
// GameCardId uint32 `json:"game_card_id" gorm:"index"`
// RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡 2-邮寄
// GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
// UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
// StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
// Remark string `json:"remark"`
// GameCard GameCard `json:"game_card" gorm:"-"`
// Store Store `json:"store" gorm:"-"`
//
// //TotalVm uint32 `json:"total_vm"` // 累计积分
// //ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
//}