package photo import ( "context" "photography-backend/internal/svc" "photography-backend/internal/types" "photography-backend/pkg/errorx" "github.com/zeromicro/go-zero/core/logx" ) type GetPhotoListLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 获取照片列表 func NewGetPhotoListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetPhotoListLogic { return &GetPhotoListLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *GetPhotoListLogic) GetPhotoList(req *types.GetPhotoListRequest) (resp *types.GetPhotoListResponse, err error) { // 1. 查询照片列表 photos, err := l.svcCtx.PhotoModel.FindList(l.ctx, req.Page, req.PageSize, req.CategoryId, req.UserId, req.Keyword) if err != nil { logx.Errorf("查询照片列表失败: %v", err) return nil, errorx.NewWithCode(errorx.ServerError) } // 2. 统计总数 total, err := l.svcCtx.PhotoModel.Count(l.ctx, req.CategoryId, req.UserId, req.Keyword) if err != nil { logx.Errorf("统计照片数量失败: %v", err) return nil, errorx.NewWithCode(errorx.ServerError) } // 3. 转换数据结构 var photoList []types.Photo for _, photo := range photos { photoList = append(photoList, types.Photo{ Id: photo.Id, Title: photo.Title, Description: photo.Description.String, FilePath: photo.FilePath, ThumbnailPath: photo.ThumbnailPath, UserId: photo.UserId, CategoryId: photo.CategoryId, CreatedAt: photo.CreatedAt.Unix(), UpdatedAt: photo.UpdatedAt.Unix(), }) } // 4. 返回结果 return &types.GetPhotoListResponse{ BaseResponse: types.BaseResponse{ Code: errorx.Success, Message: "查询成功", }, Data: types.PhotoListData{ PageResponse: types.PageResponse{ Total: total, Page: req.Page, Size: req.PageSize, }, Photos: photoList, }, }, nil }