104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
|
|
"kra/internal/biz/system"
|
|
"kra/internal/data/model"
|
|
"kra/internal/data/query"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type versionRepo struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
// NewVersionRepo 创建版本仓储
|
|
func NewVersionRepo(db *gorm.DB) system.VersionRepo {
|
|
return &versionRepo{db: db}
|
|
}
|
|
|
|
func (r *versionRepo) Create(ctx context.Context, version *system.SysVersion) error {
|
|
m := &model.SysVersion{
|
|
VersionName: version.VersionName,
|
|
VersionCode: version.VersionCode,
|
|
Description: version.Description,
|
|
VersionData: version.VersionData,
|
|
}
|
|
return query.SysVersion.WithContext(ctx).Create(m)
|
|
}
|
|
|
|
func (r *versionRepo) Delete(ctx context.Context, id string) error {
|
|
idInt, _ := strconv.ParseInt(id, 10, 64)
|
|
_, err := query.SysVersion.WithContext(ctx).Where(query.SysVersion.ID.Eq(idInt)).Delete()
|
|
return err
|
|
}
|
|
|
|
func (r *versionRepo) DeleteByIds(ctx context.Context, ids []string) error {
|
|
idList := make([]int64, len(ids))
|
|
for i, id := range ids {
|
|
idList[i], _ = strconv.ParseInt(id, 10, 64)
|
|
}
|
|
_, err := query.SysVersion.WithContext(ctx).Where(query.SysVersion.ID.In(idList...)).Delete()
|
|
return err
|
|
}
|
|
|
|
func (r *versionRepo) GetById(ctx context.Context, id string) (*system.SysVersion, error) {
|
|
idInt, _ := strconv.ParseInt(id, 10, 64)
|
|
m, err := query.SysVersion.WithContext(ctx).Where(query.SysVersion.ID.Eq(idInt)).First()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return toBizVersion(m), nil
|
|
}
|
|
|
|
func (r *versionRepo) GetList(ctx context.Context, req *system.VersionSearchReq) ([]*system.SysVersion, int64, error) {
|
|
q := query.SysVersion.WithContext(ctx).Order(query.SysVersion.CreatedAt.Desc())
|
|
|
|
// 条件搜索
|
|
if len(req.CreatedAtRange) == 2 {
|
|
q = q.Where(query.SysVersion.CreatedAt.Between(req.CreatedAtRange[0], req.CreatedAtRange[1]))
|
|
}
|
|
if req.VersionName != nil && *req.VersionName != "" {
|
|
q = q.Where(query.SysVersion.VersionName.Like("%" + *req.VersionName + "%"))
|
|
}
|
|
if req.VersionCode != nil && *req.VersionCode != "" {
|
|
q = q.Where(query.SysVersion.VersionCode.Eq(*req.VersionCode))
|
|
}
|
|
|
|
total, err := q.Count()
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
if req.PageSize > 0 {
|
|
offset := req.PageSize * (req.Page - 1)
|
|
q = q.Limit(req.PageSize).Offset(offset)
|
|
}
|
|
|
|
list, err := q.Find()
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
result := make([]*system.SysVersion, len(list))
|
|
for i, m := range list {
|
|
result[i] = toBizVersion(m)
|
|
}
|
|
return result, total, nil
|
|
}
|
|
|
|
func toBizVersion(m *model.SysVersion) *system.SysVersion {
|
|
return &system.SysVersion{
|
|
ID: m.ID,
|
|
VersionName: m.VersionName,
|
|
VersionCode: m.VersionCode,
|
|
Description: m.Description,
|
|
VersionData: m.VersionData,
|
|
CreatedAt: m.CreatedAt,
|
|
UpdatedAt: m.UpdatedAt,
|
|
}
|
|
}
|