hi-server/internal/logic/admin/application/getAppVersionListLogic.go
shanshanzhong 1d81df6664
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
add:添加短链接服务
2026-01-24 00:32:08 -08:00

76 lines
1.9 KiB
Go

package application
import (
"context"
"encoding/json"
"github.com/perfect-panel/server/internal/model/client"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/internal/types"
"github.com/perfect-panel/server/pkg/logger"
"github.com/perfect-panel/server/pkg/xerr"
"github.com/pkg/errors"
)
type GetAppVersionListLogic struct {
logger.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewGetAppVersionListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetAppVersionListLogic {
return &GetAppVersionListLogic{
Logger: logger.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetAppVersionListLogic) GetAppVersionList(req *types.GetAppVersionListRequest) (resp *types.GetAppVersionListResponse, err error) {
var versions []*client.ApplicationVersion
var total int64
db := l.svcCtx.DB.Model(&client.ApplicationVersion{})
if req.Platform != "" {
db = db.Where("platform = ?", req.Platform)
}
err = db.Count(&total).Error
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get version list count error: %v", err)
}
offset := (req.Page - 1) * req.Size
if offset < 0 {
offset = 0
}
err = db.Offset(offset).Limit(req.Size).Order("id desc").Find(&versions).Error
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "get version list error: %v", err)
}
var list []*types.ApplicationVersion
for _, v := range versions {
desc := make(map[string]string)
_ = json.Unmarshal(v.Description, &desc)
list = append(list, &types.ApplicationVersion{
Id: v.Id,
Platform: v.Platform,
Version: v.Version,
MinVersion: v.MinVersion,
ForceUpdate: v.ForceUpdate,
Description: desc,
Url: v.Url,
IsDefault: v.IsDefault,
IsInReview: v.IsInReview,
CreatedAt: v.CreatedAt.Unix(),
})
}
return &types.GetAppVersionListResponse{
Total: total,
List: list,
}, nil
}