diff --git a/controller/game_card.go b/controller/game_card.go index 44bfec9..d7eeb10 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -748,8 +748,51 @@ func PushWXPayNotice(c *gin.Context) { } } + // 用户积分时需要扣除押金金额 + vmAmount := uint32(0) + if spendType == 2 { // 开通会员 + // 黄金/短期,押金300 + if record.MemberLevel == model.MemberLevelGold || record.MemberLevel == model.MemberLevelPeriod { + if notifyInfo.TotalFee/100 > 300 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 300) + } + } else if record.MemberLevel == model.MemberLevelPlatinum { // 白金,押金600 + if notifyInfo.TotalFee/100 > 600 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 600) + } + } else if record.MemberLevel == model.MemberLevelBlackGold { // 黑金,押金1500 + if notifyInfo.TotalFee/100 > 1500 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 1500) + } + } else { + vmAmount = uint32(notifyInfo.TotalFee / 100) + } + } else if spendType == 3 { // 续费会员 + // 黄金/短期,押金300 + // 一年:没押金 699 649 有押金 399 349 + // 季度:没押金 499 有押金 199 + // 半年:没押金 599 有押金 299 + if record.MemberLevel == model.MemberLevelGold || record.MemberLevel == model.MemberLevelPeriod { + if notifyInfo.TotalFee/100 > 399 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 300) + } + } else if record.MemberLevel == model.MemberLevelPlatinum { + // 白金,押金600;续费:没押金 1299 1199 有押金 699 599 + if notifyInfo.TotalFee/100 > 699 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 600) + } + } else if record.MemberLevel == model.MemberLevelBlackGold { + // 黑金,押金1500;续费:没押金 2999 2799 有押金 1499 1299 + if notifyInfo.TotalFee/100 > 1500 { + vmAmount = uint32(notifyInfo.TotalFee/100 - 1500) + } + } else { + vmAmount = uint32(notifyInfo.TotalFee / 100) + } + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(notifyInfo.TotalFee/100), spendType) + err = model.NewSendUserVm(user.Uid, vmAmount, spendType) if err != nil { logger.Error("send user vm err:", err) } @@ -1075,8 +1118,21 @@ func PushWXPayNotice(c *gin.Context) { } } + nVmAmount := uint32(0) + if notifyInfo.TotalFee/100 >= 600 && notifyInfo.TotalFee/100 <= 999 { // 黄金升级白金 + nVmAmount = uint32(notifyInfo.TotalFee/100 - 300) + } else if notifyInfo.TotalFee/100 >= 1700 && notifyInfo.TotalFee/100 <= 2399 && + user.MemberLevel == model.MemberLevelPlatinum { // 白金升级黑金 + nVmAmount = uint32(notifyInfo.TotalFee/100 - 900) + } else if notifyInfo.TotalFee/100 >= 2300 && notifyInfo.TotalFee/100 <= 2699 && + user.MemberLevel != model.MemberLevelPlatinum { // 黄金升级黑金 + nVmAmount = uint32(notifyInfo.TotalFee/100 - 1200) + } else { + nVmAmount = uint32(notifyInfo.TotalFee / 100) + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(notifyInfo.TotalFee/100), 4) + err = model.NewSendUserVm(user.Uid, nVmAmount, 4) if err != nil { logger.Error("send user vm err:", err) } @@ -1526,8 +1582,15 @@ func PushWXPayNotice(c *gin.Context) { } } + nVmType := 5 + if spendType == 2 { // 开通会员 + nVmType = 5 + } else if spendType == 3 { // 续费会员 + nVmType = 6 + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(notifyInfo.TotalFee/100), spendType) + err = model.NewSendUserVm(user.Uid, uint32(notifyInfo.TotalFee/100), uint32(nVmType)) if err != nil { logger.Error("send user vm err:", err) } @@ -1579,6 +1642,7 @@ func PushWXPayNotice(c *gin.Context) { PromotionalSales: 0, RedeemCode: "", CategoryNumber: coupons[i].CategoryNumber, + CommodityNumber: coupons[i].CommodityNumber, Code: couponCode, } @@ -1610,6 +1674,39 @@ func PushWXPayNotice(c *gin.Context) { PromotionalSales: 0, RedeemCode: "", CategoryNumber: coupons[i].CategoryNumber, + CommodityNumber: coupons[i].CommodityNumber, + Code: couponCode, + } + + err = model.DB.Create(userCoupon).Error + if err != nil { + logger.Error("user coupon err:", err) + continue + } + } + } else if coupons[i].ActivityType == 9 { // 贴膜券,2张 + for j := 0; j < 2; j++ { + couponCode, err := utils.GenerateRandomNumber19() + if err != nil { + logger.Error("GenerateRandomNumber19err:", err) + } + userCoupon := &model.UserCoupon{ + Uid: record.Uid, + CouponId: coupons[i].ID, + CouponType: coupons[i].CouponType, + ActivityType: coupons[i].ActivityType, + ActivityId: coupons[i].ActivityId, + Value: coupons[i].Value, + State: 1, + ActiveStart: time.Now(), + ActiveEnd: time.Now().AddDate(1, 0, 0), + UseTime: time.Time{}, + MemberLevel: coupons[i].MemberLevel, + Approach: 0, + PromotionalSales: 0, + RedeemCode: "", + CategoryNumber: coupons[i].CategoryNumber, + CommodityNumber: coupons[i].CommodityNumber, Code: couponCode, } @@ -2094,8 +2191,51 @@ func HmPushWXPayNotice(c *gin.Context) { } } + // 用户积分时需要扣除押金金额 + vmAmount := uint32(0) + if spendType == 2 { // 开通会员 + // 黄金/短期,押金300 + if record.MemberLevel == model.MemberLevelGold || record.MemberLevel == model.MemberLevelPeriod { + if payAmountFloat > 300 { + vmAmount = uint32(payAmountFloat - 300) + } + } else if record.MemberLevel == model.MemberLevelPlatinum { // 白金,押金600 + if payAmountFloat > 600 { + vmAmount = uint32(payAmountFloat - 600) + } + } else if record.MemberLevel == model.MemberLevelBlackGold { // 黑金,押金1500 + if payAmountFloat > 1500 { + vmAmount = uint32(payAmountFloat - 1500) + } + } else { + vmAmount = uint32(payAmountFloat) + } + } else if spendType == 3 { // 续费会员 + // 黄金/短期,押金300 + // 一年:没押金 699 649 有押金 399 349 + // 季度:没押金 499 有押金 199 + // 半年:没押金 599 有押金 299 + if record.MemberLevel == model.MemberLevelGold || record.MemberLevel == model.MemberLevelPeriod { + if payAmountFloat > 399 { + vmAmount = uint32(payAmountFloat - 300) + } + } else if record.MemberLevel == model.MemberLevelPlatinum { + // 白金,押金600;续费:没押金 1299 1199 有押金 699 599 + if payAmountFloat > 699 { + vmAmount = uint32(payAmountFloat - 600) + } + } else if record.MemberLevel == model.MemberLevelBlackGold { + // 黑金,押金1500;续费:没押金 2999 2799 有押金 1499 1299 + if payAmountFloat > 1500 { + vmAmount = uint32(payAmountFloat - 1500) + } + } else { + vmAmount = uint32(payAmountFloat) + } + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(payAmountFloat), spendType) + err = model.NewSendUserVm(user.Uid, vmAmount, spendType) if err != nil { logger.Error("send user vm err:", err) } @@ -2422,8 +2562,21 @@ func HmPushWXPayNotice(c *gin.Context) { } } + nVmAmount := uint32(0) + if payAmountFloat >= 600 && payAmountFloat <= 999 { // 黄金升级白金 + nVmAmount = uint32(payAmountFloat - 300) + } else if payAmountFloat >= 1700 && payAmountFloat <= 2399 && + user.MemberLevel == model.MemberLevelPlatinum { // 白金升级黑金 + nVmAmount = uint32(payAmountFloat - 900) + } else if payAmountFloat >= 2300 && payAmountFloat <= 2699 && + user.MemberLevel != model.MemberLevelPlatinum { // 黄金升级黑金 + nVmAmount = uint32(payAmountFloat - 1200) + } else { + nVmAmount = uint32(payAmountFloat) + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(payAmountFloat), 4) + err = model.NewSendUserVm(user.Uid, nVmAmount, 4) if err != nil { logger.Error("send user vm err:", err) } @@ -2860,8 +3013,15 @@ func HmPushWXPayNotice(c *gin.Context) { } } + nVmType := 5 + if spendType == 2 { // 开通会员 + nVmType = 5 + } else if spendType == 3 { // 续费会员 + nVmType = 6 + } + // 赠送积分 - err = model.NewSendUserVm(user.Uid, uint32(payAmountFloat), spendType) + err = model.NewSendUserVm(user.Uid, uint32(payAmountFloat), uint32(nVmType)) if err != nil { logger.Error("send user vm err:", err) } diff --git a/controller/user.go b/controller/user.go index 0f86ebb..751da5d 100644 --- a/controller/user.go +++ b/controller/user.go @@ -1253,7 +1253,7 @@ func InviteMemberReportList(c *gin.Context) { ret := model.InviteMemberReportListResp{ List: list, - CurPage: req.PageNum, + PageNum: req.PageNum, TotalPage: totalPage, Count: count, } diff --git a/controller/user_share_card.go b/controller/user_share_card.go index 2a4cb76..614d265 100644 --- a/controller/user_share_card.go +++ b/controller/user_share_card.go @@ -371,7 +371,7 @@ func ShareCardRetrieveCreate(c *gin.Context) { } count, err := model.NewShareCardRetrieveCardQuerySet(model.DB).SerialNumberIn(req.SerialNumbers...). - //StateIn(model.RetrieveStateInCheck).Count() + //StateIn(model.RetrieveStateInCheck).TotalPage() PayStateEq(2).StateNotIn(model.RetrieveStateCheckLose, model.RetrieveStateCancel).Count() if err != nil { logger.Error("share card retrieve card err:", err) diff --git a/main.go b/main.go index f666f2b..de06418 100644 --- a/main.go +++ b/main.go @@ -7,4 +7,3 @@ import ( func main() { cmd.Execute() } - diff --git a/model/article.go b/model/article.go index 3d17417..1b0f3b9 100644 --- a/model/article.go +++ b/model/article.go @@ -5,8 +5,9 @@ import ( "github.com/codinl/go-logger" ) -//go:generate goqueryset -in article.go // gen:qs +// +//go:generate goqueryset -in article.go type Article struct { Model diff --git a/model/cashier.go b/model/cashier.go index bcdd096..46e4efe 100644 --- a/model/cashier.go +++ b/model/cashier.go @@ -1,7 +1,8 @@ package model -//go:generate goqueryset -in cashier.go // gen:qs +// +//go:generate goqueryset -in cashier.go type ErpCashier struct { Model diff --git a/model/collection.go b/model/collection.go index 4772a23..1ddb92d 100644 --- a/model/collection.go +++ b/model/collection.go @@ -4,8 +4,9 @@ import ( "github.com/codinl/go-logger" ) -//go:generate goqueryset -in collection.go // gen:qs +// +//go:generate goqueryset -in collection.go type Collection struct { Model diff --git a/model/commodity.go b/model/commodity.go index 6f3d146..0af8f41 100644 --- a/model/commodity.go +++ b/model/commodity.go @@ -7,8 +7,9 @@ import ( "time" ) -//go:generate goqueryset -in commodity.go // gen:qs +// +//go:generate goqueryset -in commodity.go type ErpStock struct { Model @@ -414,7 +415,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // } // // var count int64 -// err := qs.Count(&count).Error +// err := qs.TotalPage(&count).Error // if err != nil { // logger.Error("count err:", err) // return resp, err @@ -486,7 +487,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // // qs = qs.Where("pid", m.Pid) // //} // //var count int64 -// //err := qs.Count(&count).Error +// //err := qs.TotalPage(&count).Error // //if err != nil { // // logger.Error("count err:", err) // // return resp, err @@ -944,10 +945,10 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { //} // //func (e *ErpStockFileExcel) Processing() { -// e.Count = IntStringToUin32(e.CountString) +// e.TotalPage = IntStringToUin32(e.CountString) // if e.IsIMEI == "是" { // e.IMEIType = 2 -// e.Count = 1 +// e.TotalPage = 1 // } else if e.IsIMEI == "否" { // e.IMEIType = 1 // } @@ -1108,9 +1109,9 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // // _, ok5 := m.CensusMap[list[i].StoreId] // if ok5 { -// m.CensusMap[list[i].StoreId][list[i].ErpCommodityId] += list[i].Count +// m.CensusMap[list[i].StoreId][list[i].ErpCommodityId] += list[i].TotalPage // } else { -// m.CensusMap[list[i].StoreId] = map[uint32]uint32{list[i].ErpCommodityId: list[i].Count} +// m.CensusMap[list[i].StoreId] = map[uint32]uint32{list[i].ErpCommodityId: list[i].TotalPage} // } // //v5, ok5 := categoryCommodityNumMap[list[i].ErpCategoryId] // //if !ok5 { @@ -1154,7 +1155,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // IMEIType: v.IMEIType, // RetailPrice: v.RetailPrice, // MinRetailPrice: v.MinRetailPrice, -// Count: v2, +// TotalPage: v2, // DispatchCount: 0, // } // err = gdb.Create(stock).Error @@ -1177,9 +1178,9 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // IMEIType: v.IMEIType, // RetailPrice: v.RetailPrice, // MinRetailPrice: v.MinRetailPrice, -// Count: v2, +// TotalPage: v2, // } -// fmt.Println("inventoryStock", inventoryStock.Count) +// fmt.Println("inventoryStock", inventoryStock.TotalPage) // m.Inventories = append(m.Inventories, inventoryStock) // } // @@ -1282,7 +1283,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // // MinRetailPrice: list[i].MinRetailPrice, // // StaffCostPrice: list[i].StaffCostPrice, // // WholesalePrice: list[i].WholesalePrice, -// // Count: list[i].Count, +// // TotalPage: list[i].TotalPage, // // } // // //err := gdb.Create(inventoryCommodity).Error // // err := orm.Eloquent.Create(inventoryCommodity).Error @@ -1316,7 +1317,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // MinRetailPrice: list[i].MinRetailPrice, // StaffCostPrice: list[i].StaffCostPrice, // WholesalePrice: list[i].WholesalePrice, -// Count: list[i].Count, +// TotalPage: list[i].TotalPage, // } // //err := gdb.Create(inventoryCommodity).Error // inventoryList = append(inventoryList, inventoryCommodity) @@ -1553,7 +1554,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) { // } // } // var count int64 -// err := qs.Count(&count).Error +// err := qs.TotalPage(&count).Error // if err != nil { // logger.Error("count err:", err) // return resp, err diff --git a/model/coupon.go b/model/coupon.go index 5e0fa2b..abe5435 100644 --- a/model/coupon.go +++ b/model/coupon.go @@ -20,20 +20,21 @@ const ( type Coupon struct { Model - Name string `json:"name"` - Describe string `json:"describe" gorm:"type:text"` // 描述 - Rule string `json:"rule" gorm:"type:text"` // 优惠券使用规则 - CouponType string `json:"coupon_type"` // - ActivityType uint32 `json:"activity_type"` // - ActivityId uint32 `json:"activity_id" gorm:"index"` // 活动类型 1-会员续费 2-关注公众号 3-运费包 4-开通会员(2024/7/17新增)5-零售销售(普通会员) 6-零售销售(尊享会员)9-积分兑换优惠券 - Value uint32 `json:"value"` // - OutCount uint32 `json:"out_count"` // 用户已领取数量 - UsedCount uint32 `json:"used_count"` // 用户已使用数量 - ActiveStart time.Time `json:"active_start"` // 有效期开始 - ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 - MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 - CategoryNumber string `json:"category_number"` // 可以使用该优惠券的商品分类,如果为空则表示没限制 - IsDraw bool `json:"is_draw" gorm:"-"` // + Name string `json:"name"` + Describe string `json:"describe" gorm:"type:text"` // 描述 + Rule string `json:"rule" gorm:"type:text"` // 优惠券使用规则 + CouponType string `json:"coupon_type"` // + ActivityType uint32 `json:"activity_type"` // + ActivityId uint32 `json:"activity_id" gorm:"index"` // 活动类型 1-会员续费 2-关注公众号 3-运费包 4-开通会员(2024/7/17新增)5-零售销售(普通会员) 6-零售销售(尊享会员)9-积分兑换优惠券 + Value uint32 `json:"value"` // + OutCount uint32 `json:"out_count"` // 用户已领取数量 + UsedCount uint32 `json:"used_count"` // 用户已使用数量 + ActiveStart time.Time `json:"active_start"` // 有效期开始 + ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 + MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 + CategoryNumber string `json:"category_number"` // 可以使用该优惠券的商品分类,如果为空则表示没限制 + CommodityNumber string `json:"commodity_number"` // 可以使用该优惠券的商品编号,如果为空则表示没限制 + IsDraw bool `json:"is_draw" gorm:"-"` // } // gen:qs @@ -56,6 +57,7 @@ type UserCoupon struct { PromotionalSales uint32 `json:"promotional_sales"` // 推广人员用户id RedeemCode string `json:"redeem_code"` // CategoryNumber string `json:"category_number"` // 可以使用该优惠券的商品分类,如果为空则表示没限制 + CommodityNumber string `json:"commodity_number"` // 可以使用该优惠券的商品编号,如果为空则表示没限制 Code string `json:"code"` // 优惠券券码 StoreId uint32 `json:"store_id" gorm:"-"` // 邀请码对应门店id Availability uint32 `json:"availability" gorm:"-"` // 1-不可用 2-可用 diff --git a/model/game_card.go b/model/game_card.go index 8fda455..31da551 100644 --- a/model/game_card.go +++ b/model/game_card.go @@ -102,7 +102,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId if pageSize == 0 { pageSize = 10 } - //count, err := NewGameCardQuerySet(DB).Count() + //count, err := NewGameCardQuerySet(DB).TotalPage() //if err != nil { // logger.Error("NewGameCardQuerySet err:", err) // return cards, 0, err @@ -118,7 +118,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId case 2: // 排序类型 2-新品 qs = qs.NewProductsEq(1).OrderDescByID() - //count, err = NewGameCardQuerySet(DB).NewProductsEq(1).Count() + //count, err = NewGameCardQuerySet(DB).NewProductsEq(1).TotalPage() case 3: // 排序类型 3-销量 qs = qs.OrderDescByOrderCount() @@ -392,7 +392,7 @@ func IsGameCardListOnline(gameCards []CardInfo) (bool, error) { func IsGameCardHaveStoke(storeId, gameCardId uint32) (bool, error) { var stock GameCardGoodsStock err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(gameCardId)).One(&stock) - //count, err := NewGameCardQuerySet(DB).IDEq(gameCardId).StatusEq(1).Count() + //count, err := NewGameCardQuerySet(DB).IDEq(gameCardId).StatusEq(1).TotalPage() if err != nil { logger.Error("err:", err) return false, err @@ -789,7 +789,7 @@ func (m *GameCardGoodsStock) Add(begin *gorm.DB) error { begin = DB } //err := orm.Eloquent.Table("game_card_goods_stock").Where("store_id", m.StoreId). - // Where("game_card_id", m.GameCardId).Count(&count).Error + // Where("game_card_id", m.GameCardId).TotalPage(&count).Error recordExist, err := QueryRecordExist(fmt.Sprintf( "SELECT * FROM game_card_goods_stock WHERE store_id=%d AND game_card_id=%d", @@ -1455,7 +1455,7 @@ func CannibalizePutInStorage(taskId uint32) error { count, err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(cannibalizeTask.ToStoreId)). GameCardIdEq(list[i].GameCardId).Count() //err = orm.Eloquent.Table("game_card_goods_stock").Where("store_id = ?", cannibalizeTask.ToStoreId). - // Where("game_card_id = ?", list[i].GameCardId).Count(&count).Error + // Where("game_card_id = ?", list[i].GameCardId).TotalPage(&count).Error if err != nil { logger.Error("err:", err) continue diff --git a/model/history_browsing.go b/model/history_browsing.go index 4c5c5a0..af82892 100644 --- a/model/history_browsing.go +++ b/model/history_browsing.go @@ -5,8 +5,9 @@ import ( "github.com/codinl/go-logger" ) -//go:generate goqueryset -in history_browsing.go // gen:qs +// +//go:generate goqueryset -in history_browsing.go type HistoryBrowsing struct { Model diff --git a/model/model_test.go b/model/model_test.go index 6d40e2c..daf44d6 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -787,8 +787,8 @@ func MemberUserList() { //startTime, _ := time.Parse("2006-01-02", "2021-07-30") // //for _, user := range users { - // count, err := NewUserInviteQuerySet(DBProd).ToUidEq(user.Uid).MemberTypeEq(2).MemberOpenTimeGt(startTime).MemberOpenTimeLt(endTime).Count() - // //count, err := NewUserInviteQuerySet(DBProd).ToUidEq(user.Uid).MemberTypeEq(2).MemberOpenTimeGt(startTime).MemberOpenTimeLt(endTime).Count() + // count, err := NewUserInviteQuerySet(DBProd).ToUidEq(user.Uid).MemberTypeEq(2).MemberOpenTimeGt(startTime).MemberOpenTimeLt(endTime).TotalPage() + // //count, err := NewUserInviteQuerySet(DBProd).ToUidEq(user.Uid).MemberTypeEq(2).MemberOpenTimeGt(startTime).MemberOpenTimeLt(endTime).TotalPage() // if err != nil { // fmt.Println("err:", err) // } @@ -1990,7 +1990,7 @@ func TestNameScanInvite(t *testing.T) { Scan: 1, } fmt.Println("创建邀请:", invite) - //count, err := model.NewUserInviteQuerySet(model.DB).FromUidEq(req.InviteUid).ToUidEq(user.Uid).Count() + //count, err := model.NewUserInviteQuerySet(model.DB).FromUidEq(req.InviteUid).ToUidEq(user.Uid).TotalPage() //if err != nil { // logger.Error(err) // RespJson(c, status.InternalServerError, nil) diff --git a/model/order.go b/model/order.go index 40e63b5..7ee2b50 100644 --- a/model/order.go +++ b/model/order.go @@ -472,7 +472,7 @@ func (m *UserRentCard) IsHaveUnreturnedOrders(RentCount uint32) (bool, error) { sql := fmt.Sprintf("SELECT COUNT(order_card.id) FROM `order` RIGHT JOIN order_card ON `order`.id = order_card.order_id WHERE `order`.uid=%d AND `order`.pay_status=2 AND order_card.card_status IN (1,2,3) ;", m.Uid) //sql := fmt.Sprintf("SELECT COUNT(*) AS count FROM `order` WHERE uid = %d AND pay_status=2 AND card_status IN (1,2,3) ;", m.Uid) //sql := fmt.Sprintf("SELECT COUNT(*) AS count FROM `order` WHERE uid = %d AND pay_status=2 AND card_status IN (1,2,3) ;", uid) - //count, err := NewOrderQuerySet(DB).UidEq(uint64(uid)).PayStatusEq(PayStatusPaid).CardStatusIn(1, 2, 3).Count() + //count, err := NewOrderQuerySet(DB).UidEq(uint64(uid)).PayStatusEq(PayStatusPaid).CardStatusIn(1, 2, 3).TotalPage() //if err != nil { // logger.Error("err:", err) // return false, err @@ -503,7 +503,7 @@ func IsUserHaveUnreturnedOrder(uid uint32) (bool, error) { //sql := fmt.Sprintf("SELECT COUNT(*) AS count FROM `order` WHERE uid = %d AND pay_status IN (1,2) AND card_status IN (1,2,3) ;", uid) sql := fmt.Sprintf("SELECT COUNT(*) AS count FROM order_card WHERE uid = %d AND pay_status IN (2) AND card_status IN (1,2,3) ;", uid) - //count, err := NewOrderQuerySet(DB).UidEq(uint64(uid)).PayStatusEq(PayStatusPaid).CardStatusIn(1, 2, 3).Count() + //count, err := NewOrderQuerySet(DB).UidEq(uint64(uid)).PayStatusEq(PayStatusPaid).CardStatusIn(1, 2, 3).TotalPage() //if err != nil { // logger.Error("err:", err) // return false, err @@ -558,7 +558,7 @@ func GetShareCardRetrievePickupCode() string { for { rand.Seed(time.Now().UnixNano()) code := fmt.Sprintf("%d", rand.Intn(1000000)+100000) - //count, err := NewOrderQuerySet(DB).PickupCodeEq(code).Count() + //count, err := NewOrderQuerySet(DB).PickupCodeEq(code).TotalPage() count, err := NewShareCardRetrieveQuerySet(DB).PickupCodeEq(code).Count() if err != nil { logger.Error("err:", err) @@ -728,7 +728,7 @@ func UnPayOrderSetCancel(uid uint32) { // return errors.New("order id is 0") // } // for _, v := range cardInfos { -// for i := 0; i < int(v.Count); i++ { +// for i := 0; i < int(v.TotalPage); i++ { // //OrderCard{ // // OrderId: m.ID, // // Uid: uint32(m.Uid), diff --git a/model/redeem_code.go b/model/redeem_code.go index bc21034..e96d1eb 100644 --- a/model/redeem_code.go +++ b/model/redeem_code.go @@ -333,15 +333,21 @@ func NewSendUserVm(uid, nAmount, nType uint32) error { describe := "" event := "" - if nType == 2 { // 开通会员 - describe = "开通会员" + if nType == 2 { // 开通租卡会员 + describe = "开通租卡会员" event = VmEventOpenMember - } else if nType == 3 { // 续费会员 - describe = "续费/升级会员" + } else if nType == 3 { // 续费租卡会员 + describe = "续费租卡会员" event = VmEventRenewMember - } else if nType == 4 { // 升级会员 - describe = "续费/升级会员" + } else if nType == 4 { // 升级租卡会员 + describe = "升级租卡会员" event = VmEventUpgradeMember + } else if nType == 5 { // 开通尊享会员 + describe = "开通尊享会员" + event = VmEventOpenPrivilegeMember + } else if nType == 6 { // 续费尊享会员 + describe = "续费尊享会员" + event = VmEventRenewPrivilegeMember } else { logger.Errorf("err:", "记录会员积分失败,nType类型错误为:%d", nType) return errors.New("记录会员积分失败") diff --git a/model/share_card.go b/model/share_card.go index 7ca5587..e94c099 100644 --- a/model/share_card.go +++ b/model/share_card.go @@ -160,7 +160,7 @@ type ShareCardVmRecord struct { //type UserShareCardBillInfo struct { // GameCardId uint32 `json:"game_card_id"` -// Count uint32 `json:"count"` +// TotalPage uint32 `json:"count"` //} // 用户收回卡 @@ -458,7 +458,7 @@ func GetUserShareCardGameList(uid uint32, page, pageSize int, label string) ([]G //countSql := strings.Replace(sql, "SELECT *", "SELECT COUNT(*) ", -1) fmt.Println("countSql:", countSql) err := DB.Raw(countSql).Scan(&count).Error - //count, err := qs.Count() + //count, err := qs.TotalPage() if err != nil { logger.Error("user share card bill count err:", err) return games, 0, err diff --git a/model/user.go b/model/user.go index 348c6c2..97094a3 100644 --- a/model/user.go +++ b/model/user.go @@ -1195,7 +1195,7 @@ type InviteMemberReportListReq struct { } type InviteMemberReportListResp struct { - CurPage int `json:"cur_page"` + PageNum int `json:"page_num"` TotalPage int `json:"total_page"` Count int `json:"count"` // 总记录数 List []InviteMemberReport `json:"list"` @@ -1494,11 +1494,13 @@ const ( UpgradeGoldToPlatinumAuto // 18-黄金→白金(自动) UpgradeGoldToBlackAuto // 19-黄金→黑金(自动) UpgradePlatinumToBlackAuto // 20-白金→黑金(自动) + OpenAnnualPrivilege // 21 开通年费尊享会员 + RenewAnnualPrivilegeAuto // 22 续费年费尊享会员(自动) ) type NewUserInviteRecordReq struct { - PageNum int `json:"pageIndex"` - PageSize int `json:"pageSize"` + PageNum int `json:"page_num"` + PageSize int `json:"page_size"` FromUid uint32 `json:"from_uid"` // 邀请人ID ToUid uint32 `json:"to_uid"` // 用户ID RecordType []uint32 `json:"record_type"` // 记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动) @@ -1507,8 +1509,9 @@ type NewUserInviteRecordReq struct { } type UserInviteRecordListResp struct { - Count int `json:"count"` // 总记录数 - PageIndex int `json:"pageIndex"` // 页码 + TotalPage int `json:"total_page"` // 总页数 + PageNum int `json:"page_num"` // 页码 + Count int `json:"count"` // 总记录数 List []UserInviteRecordListData `json:"list"` } @@ -1659,6 +1662,11 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) { recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=1 AND user_invite_record.member_genre in (200,201,202))") case 20: recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=1 AND user_invite_record.member_genre not in (200,201,202))") + + case 21: // 开通年费尊享会员 + recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=6 AND spend_type=2)") + case 22: // 续费年费尊享会员(自动) + recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=6 AND spend_type=3 AND renew_hide=1)") } } @@ -1704,7 +1712,8 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) { listData = append(listData, data) } resp.List = listData - resp.PageIndex = m.PageNum + resp.PageNum = m.PageNum + resp.TotalPage = count/m.PageSize + 1 resp.Count = count return resp, nil @@ -1723,6 +1732,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32) return OpenAnnualPlatinum case 5: return OpenAnnualBlack + case 6: + return OpenAnnualPrivilege } case spendType == 3 && renewHide == 0: switch memberLevel { @@ -1741,6 +1752,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32) return RenewAnnualPlatinumAuto case 5: return RenewAnnualBlackAuto + case 6: + return RenewAnnualPrivilegeAuto } case spendType == 4 && renewHide == 0: switch memberLevel { diff --git a/model/user_vm.go b/model/user_vm.go index d37e79e..8aa2d3f 100644 --- a/model/user_vm.go +++ b/model/user_vm.go @@ -10,16 +10,18 @@ import ( const ( //VmEventExchangeGoods = "exchange_goods" - VmEventBuyGoods = "buy_goods" // 购买商品积分抵扣 - VmEventBuyGoodsReject = "buy_goods_reject" // 购买商品积分抵扣取消 - VmEventOpenMember = "open_member" // 开通会员奖励 - VmEventRenewMember = "renew_member" // 续费会员奖励 - VmEventUpgradeMember = "upgrade_member" // 升级会员奖励 - VmEventInvite1Member = "invite_1_member" // 邀请会员奖励 - VmEventInvite2Member = "invite_2_member" // 邀请会员奖励 - VmEventAttendance = "attendance" // 签到获取积分 - VmEventErpOrderSale = "erp_order_sale" // 零售销售获得积分 - VmEventErpOrderReject = "erp_order_reject" // 零售退货扣除积分 + VmEventBuyGoods = "buy_goods" // 购买商品积分抵扣 + VmEventBuyGoodsReject = "buy_goods_reject" // 购买商品积分抵扣取消 + VmEventOpenMember = "open_member" // 开通租卡会员奖励 + VmEventRenewMember = "renew_member" // 续费租卡会员奖励 + VmEventUpgradeMember = "upgrade_member" // 升级租卡会员奖励 + VmEventInvite1Member = "invite_1_member" // 邀请会员奖励 + VmEventInvite2Member = "invite_2_member" // 邀请会员奖励 + VmEventAttendance = "attendance" // 签到获取积分 + VmEventErpOrderSale = "erp_order_sale" // 零售销售获得积分 + VmEventErpOrderReject = "erp_order_reject" // 零售退货扣除积分 + VmEventOpenPrivilegeMember = "open_privilege_member" // 开通尊享会员奖励 + VmEventRenewPrivilegeMember = "renew_privilege_member" // 续费尊享会员奖励 ) // 用户积分 @@ -38,17 +40,17 @@ type UserVm struct { type UserVmRecord struct { Model - Uid uint32 `json:"uid" gorm:"column:uid;index"` - BeforeVm uint32 `json:"before_vm"` // 变动前 - AfterVm uint32 `json:"after_vm"` // 变动后 - Alter int `json:"alter"` // 数值 - Event string `json:"event" gorm:"type:varchar(100)"` // 事件 - Describe string `json:"describe" gorm:"type:text"` // 描述 - ErpOrderId uint32 `json:"erp_order_id" gorm:"index"` // 零售订单id - BillSn string `json:"bill_sn"` // 零售订单编号 - ExpiryDate time.Time `json:"expiry_date"` // 积分过期时间 - UsedVm int `json:"used_vm"` // 已使用积分 - ExpiryVm int `json:"expiry_vm" gorm:"-"` // 即将过期的积分 + Uid uint32 `json:"uid" gorm:"column:uid;index"` + BeforeVm uint32 `json:"before_vm"` // 变动前 + AfterVm uint32 `json:"after_vm"` // 变动后 + Alter int `json:"alter"` // 数值 + Event string `json:"event" gorm:"type:varchar(100)"` // 事件 + Describe string `json:"describe" gorm:"type:text"` // 描述 + ErpOrderId uint32 `json:"erp_order_id" gorm:"index"` // 零售订单id + BillSn string `json:"bill_sn"` // 零售订单编号 + ExpiryDate *time.Time `json:"expiry_date"` // 积分过期时间 + UsedVm int `json:"used_vm"` // 已使用积分 + ExpiryVm int `json:"expiry_vm" gorm:"-"` // 即将过期的积分 } func UserVmUpdate(uid uint32, amount int, event, describe string) error { @@ -106,7 +108,8 @@ func UserVmUpdate(uid uint32, amount int, event, describe string) error { // 如果是正积分,则记录该订单对应积分的有效时间 if amount > 0 { - vmRecord.ExpiryDate = time.Now().AddDate(1, 0, 0) + expireTime := time.Now().AddDate(1, 0, 0) + vmRecord.ExpiryDate = &expireTime if event == VmEventBuyGoodsReject { // 使用积分购买商品后取消 err = RefundPoints(begin, uid, amount) if err != nil { @@ -163,13 +166,15 @@ func UsePoints(gdb *gorm.DB, uid uint32, points int) error { remaining := points for _, record := range records { + if record.ExpiryDate != nil && record.ExpiryDate.IsZero() { + record.ExpiryDate = nil + } available := record.Alter - record.UsedVm // 计算该订单剩余可用积分 - if available >= remaining { // 该订单的剩余积分足够 record.UsedVm += remaining // 更新积分记录 - err := gdb.Omit("created_at").Save(record).Error + err := gdb.Model(&record).Where("id = ?", record.ID).Updates(record).Error if err != nil { logger.Error("update user_vm_record err:", err) return err @@ -180,7 +185,7 @@ func UsePoints(gdb *gorm.DB, uid uint32, points int) error { record.UsedVm = record.Alter remaining -= available // 更新积分记录 - err := gdb.Omit("created_at").Save(record).Error + err := gdb.Model(&record).Where("id = ?", record.ID).Updates(record).Error if err != nil { logger.Error("update user_vm_record err:", err) return err @@ -219,7 +224,7 @@ func RefundPoints(gdb *gorm.DB, uid uint32, points int) error { // 该订单已使用的积分足够返还 record.UsedVm -= remaining // 更新积分记录 - err := gdb.Omit("created_at").Save(record).Error + err := gdb.Model(&record).Where("id = ?", record.ID).Updates(record).Error if err != nil { logger.Error("RefundPoints update user_vm_record err:", err) return err @@ -230,7 +235,8 @@ func RefundPoints(gdb *gorm.DB, uid uint32, points int) error { record.UsedVm = 0 remaining -= used // 更新积分记录 - err := gdb.Omit("created_at").Save(record).Error + err := gdb.Model(&record).Where("id = ?", record.ID).Updates(record).Error + //err := gdb.Omit("created_at").Save(record).Error if err != nil { logger.Error("RefundPoints update user_vm_record err:", err) return err