mirror of https://github.com/rocboss/paopao-ce
parent
5ce73d6007
commit
e7686d597f
@ -0,0 +1,27 @@
|
||||
// Copyright 2023 ROC. All rights reserved.
|
||||
// Use of this source code is governed by a MIT style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package core
|
||||
|
||||
import (
|
||||
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
|
||||
)
|
||||
|
||||
// UserLevelService 用户等级服务接口
|
||||
type UserLevelService interface {
|
||||
// GetLevelByExperience 根据经验值获取用户等级
|
||||
GetLevelByExperience(experience int) (*dbr.UserLevel, error)
|
||||
|
||||
// GetAllLevels 获取所有等级配置
|
||||
GetAllLevels() ([]*dbr.UserLevel, error)
|
||||
|
||||
// CreateLevel 创建等级配置
|
||||
CreateLevel(level *dbr.UserLevel) (*dbr.UserLevel, error)
|
||||
|
||||
// UpdateLevel 更新等级配置
|
||||
UpdateLevel(level *dbr.UserLevel) error
|
||||
|
||||
// DeleteLevel 删除等级配置
|
||||
DeleteLevel(level int) error
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
// Copyright 2023 ROC. All rights reserved.
|
||||
// Use of this source code is governed by a MIT style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package dbr
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// UserLevel 用户等级配置模型
|
||||
type UserLevel struct {
|
||||
Level int `gorm:"column:level;primaryKey" json:"level"` // 等级
|
||||
MinExperience int `gorm:"column:min_experience" json:"min_experience"` // 最小经验值
|
||||
MaxExperience int `gorm:"column:max_experience" json:"max_experience"` // 最大经验值
|
||||
Name string `gorm:"column:name" json:"name"` // 等级名称
|
||||
Description string `gorm:"column:description" json:"description"` // 等级描述
|
||||
}
|
||||
|
||||
// TableName 指定表名映射
|
||||
func (u *UserLevel) TableName() string {
|
||||
return "p_user_level"
|
||||
}
|
||||
|
||||
// GetByExperience 根据经验值获取等级
|
||||
func (u *UserLevel) GetByExperience(db *gorm.DB, experience int) (*UserLevel, error) {
|
||||
var level UserLevel
|
||||
err := db.Where("min_experience <= ? AND max_experience >= ?", experience, experience).First(&level).Error
|
||||
return &level, err
|
||||
}
|
||||
|
||||
// GetAll 获取所有等级配置
|
||||
func (u *UserLevel) GetAll(db *gorm.DB) ([]*UserLevel, error) {
|
||||
var levels []*UserLevel
|
||||
err := db.Order("level ASC").Find(&levels).Error
|
||||
return levels, err
|
||||
}
|
||||
|
||||
// Create 创建等级配置
|
||||
func (u *UserLevel) Create(db *gorm.DB) (*UserLevel, error) {
|
||||
err := db.Create(&u).Error
|
||||
return u, err
|
||||
}
|
||||
|
||||
// Update 更新等级配置
|
||||
func (u *UserLevel) Update(db *gorm.DB) error {
|
||||
return db.Model(&UserLevel{}).Where("level = ?", u.Level).Save(u).Error
|
||||
}
|
||||
|
||||
// Delete 删除等级配置
|
||||
func (u *UserLevel) Delete(db *gorm.DB) error {
|
||||
return db.Where("level = ?", u.Level).Delete(&UserLevel{}).Error
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
// Copyright 2023 ROC. All rights reserved.
|
||||
// Use of this source code is governed by a MIT style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package jinzhu
|
||||
|
||||
import (
|
||||
"github.com/rocboss/paopao-ce/internal/core"
|
||||
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var (
|
||||
_ core.UserLevelService = (*userLevelSrv)(nil)
|
||||
)
|
||||
|
||||
// userLevelSrv 实现用户等级服务接口
|
||||
type userLevelSrv struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// newUserLevelService 创建用户等级服务实例
|
||||
func newUserLevelService(db *gorm.DB) core.UserLevelService {
|
||||
return &userLevelSrv{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
// GetLevelByExperience 根据经验值获取用户等级
|
||||
func (s *userLevelSrv) GetLevelByExperience(experience int) (*dbr.UserLevel, error) {
|
||||
level := &dbr.UserLevel{}
|
||||
return level.GetByExperience(s.db, experience)
|
||||
}
|
||||
|
||||
// GetAllLevels 获取所有等级配置
|
||||
func (s *userLevelSrv) GetAllLevels() ([]*dbr.UserLevel, error) {
|
||||
level := &dbr.UserLevel{}
|
||||
return level.GetAll(s.db)
|
||||
}
|
||||
|
||||
// CreateLevel 创建等级配置
|
||||
func (s *userLevelSrv) CreateLevel(level *dbr.UserLevel) (*dbr.UserLevel, error) {
|
||||
return level.Create(s.db)
|
||||
}
|
||||
|
||||
// UpdateLevel 更新等级配置
|
||||
func (s *userLevelSrv) UpdateLevel(level *dbr.UserLevel) error {
|
||||
return level.Update(s.db)
|
||||
}
|
||||
|
||||
// DeleteLevel 删除等级配置
|
||||
func (s *userLevelSrv) DeleteLevel(level int) error {
|
||||
return (&dbr.UserLevel{Level: level}).Delete(s.db)
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
package web
|
||||
|
||||
type UserCheckInResp struct {
|
||||
// CheckInCount 签到次数
|
||||
CheckInExp int `json:"check_in_exp"`
|
||||
// CheckInDays 签到天数
|
||||
CheckInDays int `json:"check_in_days"`
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package v1
|
||||
|
||||
type CheckInActivitity struct {
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
-- 删除用户等级表
|
||||
DROP TABLE IF EXISTS `p_user_level`;
|
||||
@ -0,0 +1,21 @@
|
||||
-- 创建用户等级表
|
||||
CREATE TABLE IF NOT EXISTS `p_user_level` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`level` int(11) NOT NULL COMMENT '等级',
|
||||
`min_experience` int(11) NOT NULL COMMENT '最小经验值',
|
||||
`max_experience` int(11) NOT NULL COMMENT '最大经验值',
|
||||
`created_on` int(11) NOT NULL DEFAULT 0,
|
||||
`updated_on` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_level` (`level`),
|
||||
UNIQUE KEY `idx_min_experience` (`min_experience`),
|
||||
UNIQUE KEY `idx_max_experience` (`max_experience`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户等级配置表';
|
||||
|
||||
-- 插入初始等级数据
|
||||
INSERT INTO `p_user_level` (`level`, `min_experience`, `max_experience`, `created_on`, `updated_on`) VALUES
|
||||
(1, 0, 100, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
|
||||
(2, 101, 300, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
|
||||
(3, 301, 600, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
|
||||
(4, 601, 1000, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
|
||||
(5, 1001, 1500, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
Loading…
Reference in new issue