From 7d3c1e21e9098fbbabffcc4ed7d5458af75c538c Mon Sep 17 00:00:00 2001 From: zchengo <1933757688@qq.com> Date: Fri, 16 Dec 2022 20:33:18 +0800 Subject: [PATCH] perf: version subscribe logic --- server/api/user.go | 13 +--------- server/models/user.go | 14 ++--------- server/service/user.go | 54 +++++++++++++++++------------------------- 3 files changed, 25 insertions(+), 56 deletions(-) diff --git a/server/api/user.go b/server/api/user.go index 1b62847..1d3078c 100644 --- a/server/api/user.go +++ b/server/api/user.go @@ -115,15 +115,4 @@ func (u *UserApi) GetInfo(context *gin.Context) { } userInfo, errCode := u.userService.GetInfo(int64(uid)) response.Result(errCode, userInfo, context) -} - -// 订阅个人版 -func (u *UserApi) Buy(context *gin.Context) { - uid, _ := strconv.Atoi(context.Request.Header.Get("uid")) - if uid <= 0 { - response.Result(response.ErrCodeParamInvalid, nil, context) - return - } - versionInfo, errCode := u.userService.Buy(int64(uid)) - response.Result(errCode, versionInfo, context) -} +} \ No newline at end of file diff --git a/server/models/user.go b/server/models/user.go index b448734..bca9a4f 100644 --- a/server/models/user.go +++ b/server/models/user.go @@ -5,8 +5,6 @@ type User struct { Email string `gorm:"email"` Password string `gorm:"password"` Name string `gorm:"name"` - Version int `gorm:"version"` - Expired int64 `gorm:"expired"` Status int `gorm:"status"` Created int64 `gorm:"created"` Updated int64 `gorm:"updated"` @@ -47,18 +45,10 @@ type UserMailParam struct { type UserInfo struct { Uid int64 `json:"uid"` - Ver int `json:"version"` Token string `json:"token"` } type UserPersonInfo struct { - Name string `json:"name"` - Email string `json:"email"` - Version int `json:"version"` - Expired int64 `json:"expired"` -} - -type UserVerisonInfo struct { - Version int `json:"version"` - Expired int64 `json:"expired"` + Name string `json:"name"` + Email string `json:"email"` } diff --git a/server/service/user.go b/server/service/user.go index 26d0daf..bf627d7 100644 --- a/server/service/user.go +++ b/server/service/user.go @@ -47,13 +47,33 @@ func (u *UserService) Register(param *models.UserCreateParam) int { newUser := models.User{ Email: param.Email, Password: string(password), - Version: 1, Status: 1, Created: time.Now().Unix(), } if err := global.Db.Create(&newUser).Error; err != nil { return response.ErrCodeFailed } + + // 新用户默认订阅免费版 + subscribe := models.Subscribe{ + Version: 1, + Created: time.Now().Unix(), + } + if global.Db.Table(SUBSCRIBE).Where("uid = ?", newUser.Id).First(&models.Subscribe{}).RowsAffected == 0 { + subscribe.Uid = newUser.Id + subscribe.Created = time.Now().Unix() + err := global.Db.Table(SUBSCRIBE).Create(&subscribe).Error + if err != nil { + return response.ErrCodeFailed + } + } else { + subscribe.Updated = time.Now().Unix() + err = global.Db.Model(&models.Subscribe{}).Where("uid = ?", newUser.Id).Updates(&subscribe).Error + if err != nil { + return response.ErrCodeFailed + } + } + return response.ErrCodeSuccess } @@ -79,7 +99,7 @@ func (u *UserService) Login(param *models.UserLoginParam) (*models.UserInfo, int log.Printf("[error]Login:GenerateToken:%s", err) return nil, response.ErrCodeFailed } - + userInfo := models.UserInfo{ Uid: user.Id, Token: token, @@ -189,39 +209,9 @@ func (u *UserService) GetInfo(uid int64) (*models.UserPersonInfo, int) { if err != nil { return nil, response.ErrCodeFailed } - - // 判断用户订阅是否过期 - if user.Version == 2 && time.Now().Unix() > int64(user.Expired) { - err := global.Db.Model(&models.User{}).Where("id = ?", uid).Update("version", 1).Error - if err != nil { - return nil, response.ErrCodeFailed - } - return &user, response.ErrCodeSuccess - } return &user, response.ErrCodeSuccess } -// 订阅个人版 -func (u *UserService) Buy(uid int64) (*models.UserVerisonInfo, int) { - // 订阅一个月按30天计算 - month := time.Now().Unix() + int64(2592000) - user := models.User{ - Version: 2, - Expired: month, - Updated: time.Now().Unix(), - } - err := global.Db.Model(&models.User{}).Where("id = ?", uid).Updates(&user).Error - if err != nil { - return nil, response.ErrCodeFailed - } - // 查询版本信息 - var version models.UserVerisonInfo - if err := global.Db.Table(USER).Where("id = ?", uid).First(&version).Error; err != nil { - return nil, response.ErrCodeFailed - } - return &version, response.ErrCodeSuccess -} - // 校验用户Token func (u *UserService) VerifyToken(token string) error { return global.Rdb.Exists(ctx, token).Err()