v2_10
This commit is contained in:
93
internal/erpserver/biz/v1/project/project.go
Normal file
93
internal/erpserver/biz/v1/project/project.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package project
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
db "management/internal/db/sqlc"
|
||||
"management/internal/pkg/redis"
|
||||
)
|
||||
|
||||
type ProjectBiz interface {
|
||||
Create(ctx context.Context, p *db.CreateProjectParams, pf []*db.CreateProjectFileParams) error
|
||||
Update(ctx context.Context, p *db.UpdateProjectParams, pf []*db.CreateProjectFileParams) error
|
||||
List(ctx context.Context, q *db.ListProjectConditionParam) ([]*db.ProjectView, int64, error)
|
||||
Get(ctx context.Context, id int64) (*db.Project, error)
|
||||
|
||||
ProjectExpansion
|
||||
}
|
||||
|
||||
type ProjectExpansion interface {
|
||||
ListProjectFiles(ctx context.Context, projectID int64) ([]*db.ProjectFile, error)
|
||||
}
|
||||
|
||||
type projectBiz struct {
|
||||
store db.Store
|
||||
redis redis.IRedis
|
||||
}
|
||||
|
||||
var _ ProjectBiz = (*projectBiz)(nil)
|
||||
|
||||
func New(store db.Store, redis redis.IRedis) *projectBiz {
|
||||
return &projectBiz{
|
||||
store: store,
|
||||
redis: redis,
|
||||
}
|
||||
}
|
||||
|
||||
func (b *projectBiz) Create(ctx context.Context, p *db.CreateProjectParams, pf []*db.CreateProjectFileParams) error {
|
||||
return b.store.ExecTx(ctx, func(q *db.Queries) error {
|
||||
_, err := q.CreateProject(ctx, p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, item := range pf {
|
||||
_, err = q.CreateProjectFile(ctx, item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (b *projectBiz) Update(ctx context.Context, p *db.UpdateProjectParams, pf []*db.CreateProjectFileParams) error {
|
||||
return b.store.ExecTx(ctx, func(q *db.Queries) error {
|
||||
_, err := q.UpdateProject(ctx, p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = q.DeleteProjectFile(ctx, p.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, item := range pf {
|
||||
_, err = q.CreateProjectFile(ctx, item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (b *projectBiz) List(ctx context.Context, q *db.ListProjectConditionParam) ([]*db.ProjectView, int64, error) {
|
||||
res, total, err := b.store.ListProjectCondition(ctx, q)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return res, total, nil
|
||||
}
|
||||
|
||||
func (b *projectBiz) Get(ctx context.Context, id int64) (*db.Project, error) {
|
||||
return b.store.GetProject(ctx, id)
|
||||
}
|
||||
|
||||
func (b *projectBiz) ListProjectFiles(ctx context.Context, projectID int64) ([]*db.ProjectFile, error) {
|
||||
return b.store.ListProjectFiles(ctx, projectID)
|
||||
}
|
||||
Reference in New Issue
Block a user