改造成api

This commit is contained in:
2025-07-02 14:51:23 +08:00
parent c8a81d0f49
commit 39e91e85ba
27 changed files with 665 additions and 519 deletions

View File

@@ -4,35 +4,35 @@ import (
"bytes"
"strings"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system/request"
)
func applyFilter(filter dto.SearchDto, data map[string]any, buf *bytes.Buffer) {
func applyFilter(filter request.ListUser, data map[string]any, buf *bytes.Buffer) {
var wc []string
if filter.SearchTimeBegin != "" && filter.SearchTimeEnd == "" {
data["start_at"] = filter.SearchTimeBegin
data["end_at"] = filter.SearchTimeEnd
if filter.StartTime != "" && filter.EndTime != "" {
data["start_at"] = filter.StartTime
data["end_at"] = filter.EndTime
wc = append(wc, "created_at BETWEEN :start_at AND :end_at")
}
if filter.SearchID != 0 {
data["id"] = filter.SearchID
if filter.ID != 0 {
data["id"] = filter.ID
wc = append(wc, "id = :id")
}
if filter.SearchName != "" {
data["username"] = filter.SearchName
if filter.Name != "" {
data["username"] = filter.Name
wc = append(wc, "username LIKE :username")
}
if filter.SearchEmail != "" {
data["email"] = filter.SearchEmail
if filter.Email != "" {
data["email"] = filter.Email
wc = append(wc, "email LIKE :email")
}
if filter.SearchStatus != 9999 {
data["status"] = filter.SearchStatus
if filter.Status != 9999 {
data["status"] = filter.Status
wc = append(wc, "status = :status")
}

View File

@@ -6,8 +6,8 @@ import (
"fmt"
"time"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
"management/internal/erpserver/model/system/request"
"management/internal/erpserver/repository"
"management/internal/pkg/crypto"
"management/internal/pkg/rand"
@@ -30,7 +30,7 @@ func NewStore(db *repository.Store, log *logger.Logger) system.UserRepository {
}
func (s *store) Initialize(ctx context.Context, departId, roleId int32) error {
count, err := s.Count(ctx, dto.SearchDto{})
count, err := s.Count(ctx, request.ListUser{})
if err != nil {
return err
}
@@ -128,6 +128,30 @@ func (s *store) Get(ctx context.Context, id int32) (*system.User, error) {
return &user, nil
}
func (s *store) GetByUuid(ctx context.Context, uuid uuid.UUID) (*system.User, error) {
//goland:noinspection ALL
const q = `
SELECT
id, uuid, email, username, hashed_password, salt, avatar, gender, department_id,
role_id, status, change_password_at, created_at, updated_at
FROM
sys_user
WHERE
uuid = :uuid;`
data := map[string]any{
"uuid": uuid.String(),
}
var user system.User
err := sqldb.NamedQueryStruct(ctx, s.log, s.db.DB(ctx), q, data, &user)
if err != nil {
return nil, fmt.Errorf("select uuid user: %w", err)
}
return &user, nil
}
func (s *store) GetByEmail(ctx context.Context, email string) (*system.User, error) {
//goland:noinspection ALL
const q = `
@@ -172,7 +196,7 @@ func (s *store) All(ctx context.Context) ([]*system.User, error) {
return toPointer(users), nil
}
func (s *store) Count(ctx context.Context, filter dto.SearchDto) (int64, error) {
func (s *store) Count(ctx context.Context, filter request.ListUser) (int64, error) {
//goland:noinspection ALL
const q = `
SELECT
@@ -197,7 +221,7 @@ func (s *store) Count(ctx context.Context, filter dto.SearchDto) (int64, error)
return count.Count, nil
}
func (s *store) List(ctx context.Context, filter dto.SearchDto) ([]*system.User, error) {
func (s *store) List(ctx context.Context, filter request.ListUser) ([]*system.User, error) {
//goland:noinspection ALL
const q = `
SELECT
@@ -207,8 +231,8 @@ func (s *store) List(ctx context.Context, filter dto.SearchDto) ([]*system.User,
sys_user`
data := map[string]any{
"offset": (filter.Page - 1) * filter.Rows,
"rows_per_page": filter.Rows,
"offset": (filter.PageID - 1) * filter.PageSize,
"rows_per_page": filter.PageSize,
}
buf := bytes.NewBufferString(q)