feat: vip goods

master
howell 3 years ago
parent 49c8c05bfe
commit b7b15d6afb

@ -1,12 +1,20 @@
package vip package vip
import ( import (
"errors"
"fmt"
"recook/internal/back" "recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/user"
"recook/internal/v2/lib/common"
"recook/internal/v2/model/recook/goods" "recook/internal/v2/model/recook/goods"
"time"
"git.oa00.com/go/mysql" "git.oa00.com/go/mysql"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/golangkit/formatime"
"github.com/shopspring/decimal" "github.com/shopspring/decimal"
"gorm.io/gorm"
) )
type Proxy struct{} type Proxy struct{}
@ -38,3 +46,66 @@ func (o Proxy) VipGoods(c *gin.Context) {
} }
back.Suc(c, "", data) back.Suc(c, "", data)
} }
func (o Proxy) VipActivity(c *gin.Context) {
id, _ := common.GetAppUserId(c)
if id == 0 {
back.Fail(c, "用户不存在")
}
key := fmt.Sprintf("user:vip:%d", id)
dbc.Rds.SetNX(key, 1, 15)
defer dbc.Rds.Del(key)
key2 := "user:actived:set"
res := dbc.Rds.SIsMember(key2, id)
if res.Val() {
// 存在
back.Fail(c, "用户已激活")
}
var u1 user.Information
patch := make(map[string]interface{})
patch["level"] = 2
patch["parent_id"] = 0
patch["is_offline"] = true
now1 := time.Now()
now := time.Date(now1.Year(), now1.Month(), now1.Day(), 0, 0, 0, 00, time.Local)
end := now
if u1.VipUpgradeEnd.Valid && time.Now().Before(u1.VipUpgradeEnd.Time) {
// 续约
now = u1.VipUpgradeStart.Time
end = u1.VipUpgradeEnd.Time
} else {
// 没有升级过 || 升级过已经过了上一次的时间重新计算
patch["old_level"] = u1.Level
patch["old_parent_id"] = u1.ParentID
patch["old_root_id"] = u1.RootID
}
end = end.AddDate(0, 0, 7)
patch["vip_upgrade_start"] = formatime.NewSecondFrom(now)
patch["vip_upgrade_end"] = formatime.NewSecondFrom(end)
if err := mysql.Db.Transaction(func(tx *gorm.DB) error {
if err := mysql.Db.Table((&user.Information{}).TableName()).Where("id = ?", u1.ID).Updates(patch).Error; err != nil {
return err
}
res := dbc.Rds.SAdd(key2, id)
if r1, _ := res.Result(); r1 == 0 {
return errors.New("已使用")
}
return nil
}); err != nil {
back.Fail(c, err.Error())
}
}
func (o Proxy) VipIsUsed(c *gin.Context) {
id, _ := common.GetAppUserId(c)
if id == 0 {
back.Fail(c, "用户不存在")
}
key2 := "user:actived:set"
res := dbc.Rds.SIsMember(key2, id)
back.Suc(c, "", gin.H{"is_used": res.Val()})
}

@ -262,11 +262,13 @@ func routerApp(appRouter *gin.RouterGroup) {
profitRouter.POST("shop", proxy.ProfitShopList) profitRouter.POST("shop", proxy.ProfitShopList)
} }
} }
vipController := appRouter.Group("vip_goods") vipController := appRouter.Group("vip", authorize)
{ {
proxy := vip.Proxy{} proxy := vip.Proxy{}
{ {
vipController.POST("", proxy.VipGoods) vipController.POST("goods", proxy.VipGoods)
vipController.POST("activity", proxy.VipActivity)
vipController.POST("is_used", proxy.VipIsUsed)
} }
} }

Loading…
Cancel
Save