137 lines
3.0 KiB
Go
137 lines
3.0 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"myschools.me/heritage/heritage-api/model"
|
|
"myschools.me/heritage/heritage-api/mysql"
|
|
)
|
|
|
|
var ErrNotFound = errors.New("not found")
|
|
|
|
func OrgCreateOrg(parentID, name string, enabled bool, sort int, remark string) (*model.Org, error) {
|
|
name = strings.TrimSpace(name)
|
|
if name == "" {
|
|
return nil, errors.New("name required")
|
|
}
|
|
o := &model.Org{
|
|
ID: newID(),
|
|
ParentID: strings.TrimSpace(parentID),
|
|
Name: name,
|
|
Enabled: enabled,
|
|
Sort: sort,
|
|
Remark: strings.TrimSpace(remark),
|
|
}
|
|
if err := mysql.OrgCreate(o); err != nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgCreateOrg",
|
|
}).Warnf("mysql.OrgCreate: %v", err)
|
|
return nil, err
|
|
}
|
|
return o, nil
|
|
}
|
|
|
|
func OrgUpdateOrg(idv string, parentID, name *string, enabled *bool, sort *int, remark *string) (*model.Org, error) {
|
|
oid := strings.TrimSpace(idv)
|
|
if oid == "" {
|
|
return nil, ErrNotFound
|
|
}
|
|
existing, found, err := mysql.OrgByID(&oid)
|
|
if err != nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgUpdateOrg",
|
|
}).Warnf("mysql.OrgByID: %v", err)
|
|
return nil, err
|
|
}
|
|
if !found || existing == nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgUpdateOrg",
|
|
}).Warnf("mysql.OrgByID: not found")
|
|
return nil, ErrNotFound
|
|
}
|
|
if parentID != nil {
|
|
existing.ParentID = strings.TrimSpace(*parentID)
|
|
}
|
|
if name != nil {
|
|
n := strings.TrimSpace(*name)
|
|
if n == "" {
|
|
return nil, errors.New("name required")
|
|
}
|
|
existing.Name = n
|
|
}
|
|
if enabled != nil {
|
|
existing.Enabled = *enabled
|
|
}
|
|
if sort != nil {
|
|
existing.Sort = *sort
|
|
}
|
|
if remark != nil {
|
|
existing.Remark = strings.TrimSpace(*remark)
|
|
}
|
|
if err := mysql.OrgUpdate(existing); err != nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgUpdateOrg",
|
|
}).Warnf("mysql.OrgUpdate: %v", err)
|
|
return nil, err
|
|
}
|
|
return existing, nil
|
|
}
|
|
|
|
func OrgDeleteOrg(idv string) error {
|
|
oid := strings.TrimSpace(idv)
|
|
if oid == "" {
|
|
return ErrNotFound
|
|
}
|
|
ok, err := mysql.OrgDelete(&oid)
|
|
if err != nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgDeleteOrg",
|
|
}).Warnf("mysql.OrgDelete: %v", err)
|
|
return err
|
|
}
|
|
if !ok {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgDeleteOrg",
|
|
}).Warnf("mysql.OrgDelete: not found")
|
|
return ErrNotFound
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func OrgGetOrg(idv string) (*model.Org, error) {
|
|
oid := strings.TrimSpace(idv)
|
|
if oid == "" {
|
|
return nil, ErrNotFound
|
|
}
|
|
o, found, err := mysql.OrgByID(&oid)
|
|
if err != nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgGetOrg",
|
|
}).Warnf("mysql.OrgByID: %v", err)
|
|
return nil, err
|
|
}
|
|
if !found || o == nil {
|
|
logrus.WithFields(logrus.Fields{
|
|
"func": "OrgGetOrg",
|
|
}).Warnf("mysql.OrgByID: not found")
|
|
return nil, ErrNotFound
|
|
}
|
|
return o, nil
|
|
}
|
|
|
|
func OrgListOrgs(parentID *string, page, size int) ([]model.Org, int64, error) {
|
|
if page < 1 {
|
|
page = 1
|
|
}
|
|
if size < 1 {
|
|
size = 20
|
|
}
|
|
if size > 200 {
|
|
size = 200
|
|
}
|
|
offset := (page - 1) * size
|
|
return mysql.OrgList(parentID, &offset, &size)
|
|
}
|