68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package services
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
|
|
"server/models"
|
|
|
|
"github.com/beego/beego/v2/client/orm"
|
|
)
|
|
|
|
func ListContacts(tenantId string, relatedType int, relatedId string) ([]models.Contact, error) {
|
|
o := orm.NewOrm()
|
|
var list []models.Contact
|
|
qs := o.QueryTable(new(models.Contact)).Filter("tenant_id", tenantId).Filter("related_type", relatedType).Filter("related_id", relatedId).Filter("delete_time__isnull", true)
|
|
_, err := qs.All(&list)
|
|
return list, err
|
|
}
|
|
|
|
func CreateContact(m *models.Contact) error {
|
|
if m.TenantId == "" || m.RelatedType == 0 || m.RelatedId == "" || m.ContactName == "" {
|
|
return errors.New("缺少必填参数")
|
|
}
|
|
o := orm.NewOrm()
|
|
_, err := o.Insert(m)
|
|
return err
|
|
}
|
|
|
|
func UpdateContact(m *models.Contact) error {
|
|
if m.Id == 0 {
|
|
return errors.New("id不能为空")
|
|
}
|
|
o := orm.NewOrm()
|
|
existing := models.Contact{Id: m.Id}
|
|
if err := o.Read(&existing); err != nil {
|
|
return err
|
|
}
|
|
if existing.TenantId != m.TenantId {
|
|
return errors.New("租户不匹配")
|
|
}
|
|
if existing.DeleteTime != nil {
|
|
return errors.New("记录已删除")
|
|
}
|
|
_, err := o.Update(m, "contact_name", "gender", "phone1", "phone2", "phone3", "qq", "wechat", "email", "position", "department", "home_address", "remark", "is_primary")
|
|
return err
|
|
}
|
|
|
|
func DeleteContact(id int64, tenantId string) error {
|
|
if id == 0 {
|
|
return errors.New("id不能为空")
|
|
}
|
|
o := orm.NewOrm()
|
|
m := models.Contact{Id: id}
|
|
if err := o.Read(&m); err != nil {
|
|
return err
|
|
}
|
|
if m.TenantId != tenantId {
|
|
return errors.New("租户不匹配")
|
|
}
|
|
if m.DeleteTime != nil {
|
|
return errors.New("记录已删除")
|
|
}
|
|
now := time.Now()
|
|
m.DeleteTime = &now
|
|
_, err := o.Update(&m, "delete_time")
|
|
return err
|
|
}
|