1.提交尊享会员相关优化;

This commit is contained in:
chenlin 2024-09-26 11:44:29 +08:00
parent 5bb2133811
commit 0a5a0d2ccb
17 changed files with 284 additions and 93 deletions

View File

@ -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)
}

View File

@ -1253,7 +1253,7 @@ func InviteMemberReportList(c *gin.Context) {
ret := model.InviteMemberReportListResp{
List: list,
CurPage: req.PageNum,
PageNum: req.PageNum,
TotalPage: totalPage,
Count: count,
}

View File

@ -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)

View File

@ -7,4 +7,3 @@ import (
func main() {
cmd.Execute()
}

View File

@ -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

View File

@ -1,7 +1,8 @@
package model
//go:generate goqueryset -in cashier.go
// gen:qs
//
//go:generate goqueryset -in cashier.go
type ErpCashier struct {
Model

View File

@ -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

View File

@ -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

View File

@ -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-可用

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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),

View File

@ -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("记录会员积分失败")

View File

@ -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

View File

@ -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 {

View File

@ -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