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
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
|
|
}
|
|
|