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