3 Star 1 Fork 921

高煜涛/gin-vue-admin

forked from pixel/gin-vue-admin 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
db_automation.go 3.16 KB
一键复制 编辑 原始数据 按行查看 历史
高煜涛 提交于 2024-09-23 18:12 . 2024/9/23
package utils
import (
"context"
"errors"
"fmt"
"gitee.com/g-qs/gin-vue-admin/server/global"
"gitee.com/g-qs/gin-vue-admin/server/model/hierarchy"
"gitee.com/g-qs/gin-vue-admin/server/model/user"
"strconv"
"time"
"gorm.io/gorm"
)
//@author: [songzhibin97](https://github.com/songzhibin97)
//@function: ClearTable
//@description: 清理数据库表数据
//@param: db(数据库对象) *gorm.DB, tableName(表名) string, compareField(比较字段) string, interval(间隔) string
//@return: error
func ClearTable(db *gorm.DB, tableName string, compareField string, interval string) error {
if db == nil {
return errors.New("db Cannot be empty")
}
duration, err := time.ParseDuration(interval)
if err != nil {
return err
}
if duration < 0 {
return errors.New("parse duration < 0")
}
return db.Debug().Exec(fmt.Sprintf("DELETE FROM %s WHERE %s < ?", tableName, compareField), time.Now().Add(-duration)).Error
}
// CheckExpiredMembers 检测过期会员
func CheckExpiredMembers(db *gorm.DB) error {
fmt.Println("Executing expire member check...")
// 查询每个用户最近的一条开通记录
var records []user.Vip
if err := db.Model(&user.Vip{}).Order("id, updated_at DESC").Group("uid").Find(&records).Error; err != nil {
fmt.Println("查询开通会员记录错误:", err)
return err
}
// 遍历记录进行处理
for _, v := range records {
// 检查条件
if v.Status == 2 && v.ExpiredAt.Before(time.Now()) {
// 更新开通记录状态
if err := db.Model(&user.Vip{}).Where("id = ?", v.ID).Update("status", 3).Error; err != nil {
fmt.Printf("修改失败的用户ID为%d: %v\n", v.Uid, err)
uidString := strconv.Itoa(int(v.Uid))
return errors.New("修改失败的用户ID为:" + uidString)
continue
}
// 更新用户类型
if err := db.Model(&user.User{}).Where("id = ?", v.Uid).Update("types", 3).Error; err != nil {
uidString := strconv.Itoa(int(v.Uid))
return errors.New("修改失败的用户ID为:" + uidString)
continue
}
fmt.Printf("更新类型的用户ID为%d\n", v.Uid)
}
}
return nil
}
// UpdateCountData 更新统计数据
func UpdateCountData(db *gorm.DB) (err error) {
fmt.Println("Updating count data...")
//设置KEY
key := "Count:redis"
err = global.GVA_REDIS.Del(context.Background(), key).Err()
var UsersTotal int64
var audioArticlePvTotal int64
var graphicArticlePvTotal int64
var videoArticlePvTotal int64
// 获取用户总数
err = global.GVA_DB.Model(&user.User{}).Count(&UsersTotal).Error
// 获取文章总浏览量
err = global.GVA_DB.Model(&hierarchy.FdArticleAudio{}).Select("SUM(pv)").Scan(&audioArticlePvTotal).Error
err = global.GVA_DB.Model(&hierarchy.FdArticleGraphic{}).Select("SUM(pv)").Scan(&graphicArticlePvTotal).Error
err = global.GVA_DB.Model(&hierarchy.FdArticleVideo{}).Select("SUM(pv)").Scan(&videoArticlePvTotal).Error
PvTotal := audioArticlePvTotal + graphicArticlePvTotal + videoArticlePvTotal
usersTotal := fmt.Sprintf("%.2f", float64(UsersTotal)*0.1)
hashData := map[string]interface{}{
"users_total": usersTotal,
"pv_total": PvTotal,
}
err = global.GVA_REDIS.HMSet(context.Background(), key, hashData).Err()
if err != nil {
return err
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/g-qs/gin-vue-admin.git
git@gitee.com:g-qs/gin-vue-admin.git
g-qs
gin-vue-admin
gin-vue-admin
5e8989dd5c3b

搜索帮助