1.注册会员账户时合作商id默认设置为1;
2.生成用户邀请记录时记录用户id; 3.修复首页"抢光了"、"不在本店"显示不准的缺陷; 4.用户升级时抵扣金规则调整,修复之前短期升级白金/黑金多收费问题。
This commit is contained in:
parent
fdc30f76d8
commit
b21dc14bcf
3
Makefile
3
Makefile
|
@ -16,6 +16,9 @@ build-sqlite:
|
|||
dev:
|
||||
GOOS=linux GOARCH=amd64 go build -o dev_app_server main.go
|
||||
|
||||
beta:
|
||||
GOOS=linux GOARCH=amd64 go build -o test_app_server main.go
|
||||
|
||||
pro:
|
||||
GOOS=linux GOARCH=amd64 go build -o app_server main.go
|
||||
|
||||
|
|
|
@ -91,6 +91,7 @@ func AuthLogin(c *gin.Context) {
|
|||
LastLoginAt: nowTime,
|
||||
MemberLevel: model.MemberLevelUser, // 普通会员
|
||||
Tel: phone.PhoneNumber,
|
||||
CooperativeBusinessId: 1,
|
||||
}
|
||||
user.Uid = createUid() // 新建uid
|
||||
err = user.Create(model.DB)
|
||||
|
@ -215,6 +216,7 @@ func AuthLogin(c *gin.Context) {
|
|||
//user.WxName = userInfo.Nickname
|
||||
//user.WxAvatar = userInfo.Avatar
|
||||
user.CreatedAt = nowTime
|
||||
user.CooperativeBusinessId = 1
|
||||
err = model.UserUpdate(&user)
|
||||
if err != nil {
|
||||
logger.Error("WxOpenIDEq:", err)
|
||||
|
|
|
@ -686,6 +686,7 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
}
|
||||
} else if err == model.RecordNotFound { // 没有邀请记录,完全是用户自己开通会员,自己续费;按产品要求也需要有记录
|
||||
inviteRecordNew := &model.UserInviteRecord{
|
||||
ToUid: user.Uid,
|
||||
Action: 2,
|
||||
SpendType: spendType,
|
||||
MemberLevel: record.MemberLevel,
|
||||
|
|
|
@ -425,8 +425,25 @@ func UpgradeMember(c *gin.Context) {
|
|||
}
|
||||
memberYare := 0
|
||||
memberMendFee := int64(0)
|
||||
|
||||
//// 抵扣金
|
||||
//deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
||||
|
||||
// 2024-06-07修改,解决短期升级白金/黑金多收费问题
|
||||
memberDays := int64(0)
|
||||
switch req.MemberGenre {
|
||||
case 201:
|
||||
memberDays = 90
|
||||
case 202:
|
||||
memberDays = 180
|
||||
default:
|
||||
memberDays = 365
|
||||
}
|
||||
logger.Info("req.MemberGenre is:", req.MemberGenre)
|
||||
logger.Info("memberDays is:", memberDays)
|
||||
// 抵扣金
|
||||
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
||||
deductionFee := (((int64(memberFee) * deductionDays) / memberDays) / 100) * 100
|
||||
|
||||
if deductionDays < 365 {
|
||||
memberYare = 1
|
||||
// 补会员费
|
||||
|
|
|
@ -9,8 +9,9 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
//go:generate goqueryset -in game_card.go
|
||||
// gen:qs
|
||||
//
|
||||
//go:generate goqueryset -in game_card.go
|
||||
type GameCard struct {
|
||||
Model
|
||||
|
||||
|
@ -159,6 +160,13 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
gameIds := make([]uint32, 0)
|
||||
gameIdMap := make(map[uint32]uint32)
|
||||
|
||||
effectiveStoreList := GetAllEffectiveStoreMap()
|
||||
if len(effectiveStoreList) == 0 {
|
||||
logger.Error("effectiveStoreList is null")
|
||||
return nil, 0, errors.New("无有效门店")
|
||||
}
|
||||
effectiveStoreListStr := fmt.Sprintf("(%s)", strings.Trim(strings.Join(strings.Fields(fmt.Sprint(effectiveStoreList)), ","), "[]"))
|
||||
|
||||
if sortType == 1 {
|
||||
if storeId != 0 {
|
||||
//gameIds := make([]uint32, 0)
|
||||
|
@ -181,7 +189,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
//err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
//DB.Table("game_card_goods_stock").Joins("")
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id=%d AND a.rent_stock>0 ORDER BY b.id ASC;", storeId)
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
|
@ -198,7 +206,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id!=%d AND a.rent_stock>0 ORDER BY b.id ASC;", storeId)
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id!=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
|
@ -214,7 +222,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
|
||||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks)
|
||||
cardStockSql3 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 ORDER BY b.id ASC;")
|
||||
cardStockSql3 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql3).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
|
@ -228,14 +236,15 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
}
|
||||
}
|
||||
|
||||
if len(gameIds) > 0 {
|
||||
qs = qs.IDIn(gameIds...)
|
||||
}
|
||||
// 有可能添加了游戏但没添加库存,添加这段代码后不会展示
|
||||
//if len(gameIds) > 0 {
|
||||
// qs = qs.IDIn(gameIds...)
|
||||
//}
|
||||
} else {
|
||||
var cardStocks []GameCardGoodsStock
|
||||
//err := NewGameCardGoodsStockQuerySet(DB).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock>0 ORDER BY b.id ASC;")
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock>0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
|
@ -251,7 +260,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
|
||||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks)
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 ORDER BY b.id ASC;")
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
|
@ -264,9 +273,9 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
}
|
||||
}
|
||||
if len(gameIds) > 0 {
|
||||
qs = qs.IDIn(gameIds...)
|
||||
}
|
||||
//if len(gameIds) > 0 {
|
||||
// qs = qs.IDIn(gameIds...)
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -286,7 +295,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
return cards, 0, err
|
||||
}
|
||||
|
||||
GameCardListSetStockState(cards, storeId)
|
||||
GameCardListSetStockState(cards, storeId, effectiveStoreList)
|
||||
} else {
|
||||
err = qs.OrderDescByID().All(&cards)
|
||||
//err = qs.OrderAscByID().All(&cards)
|
||||
|
@ -299,6 +308,13 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
|
|||
cardMap := make(map[uint32]GameCard, 0)
|
||||
for i, _ := range cards {
|
||||
cardMap[cards[i].ID] = cards[i]
|
||||
|
||||
// 如果游戏列表有记录,但游戏库存列表无记录;则也添加到gameIds,库存记录为3无库存
|
||||
_, ok := gameIdMap[cards[i].ID]
|
||||
if !ok {
|
||||
gameIds = append(gameIds, uint32(cards[i].ID))
|
||||
gameIdMap[cards[i].ID] = 3
|
||||
}
|
||||
}
|
||||
for i, _ := range gameIds {
|
||||
v, ok1 := cardMap[gameIds[i]]
|
||||
|
@ -456,9 +472,16 @@ func GetGameCardInfo(id uint64, storeId uint32) (GameCard, error) {
|
|||
return game, err
|
||||
}
|
||||
|
||||
effectiveStoreList := GetAllEffectiveStoreMap()
|
||||
if len(effectiveStoreList) == 0 {
|
||||
logger.Error("effectiveStoreList is null")
|
||||
return GameCard{}, errors.New("无有效门店")
|
||||
}
|
||||
|
||||
var cardStock GameCardGoodsStock
|
||||
if storeId != 0 {
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).StoreIdEq(uint64(storeId)).One(&cardStock)
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).StoreIdEq(uint64(storeId)).
|
||||
StoreIdIn(uint32ToUint64(effectiveStoreList)...).One(&cardStock)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return game, nil
|
||||
|
@ -470,7 +493,8 @@ func GetGameCardInfo(id uint64, storeId uint32) (GameCard, error) {
|
|||
|
||||
cardStock = GameCardGoodsStock{}
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).
|
||||
StoreIdNe(uint64(storeId)).RentStockGt(0).One(&cardStock)
|
||||
StoreIdNe(uint64(storeId)).StoreIdIn(uint32ToUint64(effectiveStoreList)...).
|
||||
RentStockGt(0).One(&cardStock)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return game, nil
|
||||
|
@ -481,7 +505,8 @@ func GetGameCardInfo(id uint64, storeId uint32) (GameCard, error) {
|
|||
}
|
||||
} else {
|
||||
cardStock = GameCardGoodsStock{}
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).RentStockGt(0).One(&cardStock)
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).RentStockGt(0).
|
||||
StoreIdIn(uint32ToUint64(effectiveStoreList)...).One(&cardStock)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return game, nil
|
||||
|
@ -1749,7 +1774,15 @@ func (m *AssistantMemberPromotionReq) List() ([]InviteMemberReport, int, error)
|
|||
return reports, totalPage, nil
|
||||
}
|
||||
|
||||
func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
||||
func uint32ToUint64(slice []uint32) []uint64 {
|
||||
result := make([]uint64, len(slice))
|
||||
for i, v := range slice {
|
||||
result[i] = uint64(v)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func GameCardListSetStockState(list []GameCard, storeId uint32, storeList []uint32) {
|
||||
gameCardIds := make([]uint64, 0, len(list))
|
||||
for i, _ := range list {
|
||||
gameCardIds = append(gameCardIds, uint64(list[i].ID))
|
||||
|
@ -1761,8 +1794,21 @@ func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
|||
gameIdMap := make(map[uint32]uint32)
|
||||
if storeId != 0 {
|
||||
var cardStocks []GameCardGoodsStock
|
||||
err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdIn(gameCardIds...).
|
||||
RentStockGt(0).All(&cardStocks)
|
||||
err := NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).StoreIdIn(uint32ToUint64(storeList)...).
|
||||
RentStockEq(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
for i, _ := range cardStocks {
|
||||
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
|
||||
if !ok {
|
||||
//gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
|
||||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
}
|
||||
}
|
||||
|
||||
err = NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).StoreIdIn(uint32ToUint64(storeList)...).
|
||||
GameCardIdIn(gameCardIds...).RentStockGt(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
|
@ -1774,8 +1820,8 @@ func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
|||
}
|
||||
}
|
||||
|
||||
err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).GameCardIdIn(gameCardIds...).
|
||||
RentStockGt(0).All(&cardStocks)
|
||||
err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).StoreIdIn(uint32ToUint64(storeList)...).
|
||||
GameCardIdIn(gameCardIds...).RentStockGt(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
|
@ -1787,22 +1833,22 @@ func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
|||
}
|
||||
}
|
||||
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).RentStockEq(0).All(&cardStocks)
|
||||
} else {
|
||||
var cardStocks []GameCardGoodsStock
|
||||
err := NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).StoreIdIn(uint32ToUint64(storeList)...).
|
||||
RentStockEq(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
for i, _ := range cardStocks {
|
||||
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
|
||||
if !ok {
|
||||
//gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
|
||||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
var cardStocks []GameCardGoodsStock
|
||||
err := NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).RentStockGt(0).
|
||||
All(&cardStocks)
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).StoreIdIn(uint32ToUint64(storeList)...).
|
||||
RentStockGt(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
|
@ -1812,18 +1858,6 @@ func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
|||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 1
|
||||
}
|
||||
}
|
||||
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(gameCardIds...).RentStockEq(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("GetGameIdByType err:", err)
|
||||
}
|
||||
for i, _ := range cardStocks {
|
||||
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
|
||||
if !ok {
|
||||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for i, _ := range list {
|
||||
|
@ -1831,6 +1865,8 @@ func GameCardListSetStockState(list []GameCard, storeId uint32) {
|
|||
if ok {
|
||||
//gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
list[i].StockState = v
|
||||
} else {
|
||||
list[i].StockState = 3 // 如果以上都没找到,则应该是没库存
|
||||
}
|
||||
//gameCardIds = append(gameCardIds, uint64(list[i].ID))
|
||||
}
|
||||
|
|
|
@ -235,6 +235,21 @@ func GetAllStoreMap() map[uint32]Store {
|
|||
return storeMap
|
||||
}
|
||||
|
||||
func GetAllEffectiveStoreMap() []uint32 {
|
||||
var storeList []uint32
|
||||
var stores []Store
|
||||
err := DB.Table("store").Where("member_service = 1").Find(&stores).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:%s", err)
|
||||
return storeList
|
||||
}
|
||||
for i, _ := range stores {
|
||||
storeList = append(storeList, stores[i].ID)
|
||||
}
|
||||
|
||||
return storeList
|
||||
}
|
||||
|
||||
func CannibalizeGameCardGoodsSetInfo(goodses []CannibalizeGameCardGoods) []CannibalizeGameCardGoods {
|
||||
if len(goodses) == 0 {
|
||||
return goodses
|
||||
|
|
Loading…
Reference in New Issue
Block a user