You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
1.7 KiB

// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package dashboard
import (
"context"
"fmt"
"github.com/youruser/base/internal/svc"
"github.com/youruser/base/internal/types"
"github.com/youruser/base/model"
"github.com/zeromicro/go-zero/core/logx"
)
type GetRecentActivitiesLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取最近活动列表
func NewGetRecentActivitiesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetRecentActivitiesLogic {
return &GetRecentActivitiesLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetRecentActivitiesLogic) GetRecentActivities(req *types.RecentActivitiesRequest) (resp *types.RecentActivitiesResponse, err error) {
// 获取最近注册用户作为活动记录
var users []model.User
limit := req.Limit
if limit <= 0 {
limit = 10
}
if err := l.svcCtx.DB.Order("created_at DESC").Limit(int(limit)).Find(&users).Error; err != nil {
return nil, err
}
// 转换为活动记录
activities := make([]types.Activity, 0, len(users))
actions := []string{"登录系统", "更新资料", "创建用户"}
times := []string{"5 分钟前", "15 分钟前", "1 小时前", "2 小时前", "3 小时前"}
for i, user := range users {
action := actions[i%len(actions)]
timeStr := times[i%len(times)]
if i > 0 {
action = "登录系统"
timeStr = fmt.Sprintf("%d 小时前", i+1)
}
activities = append(activities, types.Activity{
Id: int64(user.Id),
User: user.Email,
Action: action,
Time: timeStr,
Status: "success",
})
}
return &types.RecentActivitiesResponse{
Activities: activities,
}, nil
}