123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- package models
- import (
- "context"
- "eta/eta_mini_crm/utils"
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- )
- type SysDepartment struct {
- SysDepartmentId int `orm:"pk" description:"部门id"`
- SysDepartmentName string `description:"部门名称"`
- Sort int `description:"排序"`
- Level int `description:"层级"`
- ParentId int `description:"父目录id"`
- }
- func (s *SysDepartment) Add() (err error) {
- o := orm.NewOrm()
- _, err = o.Insert(s)
- return
- }
- func (s *SysDepartment) Update(cols []string) (err error) {
- o := orm.NewOrm()
- _, err = o.Update(s, cols...)
- return
- }
- type SysDepartmentList struct {
- SysDepartmentId int `description:"部门id"`
- SysDepartmentName string `description:"部门名称"`
- Child []*SysDepartmentList `description:"分组"`
- Level int `description:"1:部门, 2|3:分组"`
- ParentId int `description:"父目录id"`
- }
- func DeleteSysDepartmentById(sysDepartmentIds []string, level int) (err error) {
- o := orm.NewOrm()
- err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
- sql := `DELETE FROM sys_department WHERE sys_department_id IN (?) `
- _, e := txOrm.QueryTable(&SysDepartment{}).
- Filter("sys_department_id__in", sysDepartmentIds).
- Delete()
- if e != nil {
- return e
- }
- if level == 1 {
- sql = `DELETE FROM sys_user_department_mapping WHERE sys_department_id1=?`
- _, e = txOrm.Raw(sql, sysDepartmentIds[0]).Exec()
- if e != nil {
- return e
- }
- } else {
- sql = `UPDATE sys_user_department_mapping SET `
- for i := level; i <= utils.MaxDepartmentLevel; i++ {
- sql += fmt.Sprintf("sys_department_id%d=0 ", i)
- if i != utils.MaxDepartmentLevel {
- sql += ","
- }
- }
- sql += fmt.Sprintf("WHERE sys_department_id%d=?", level)
- _, e = txOrm.Raw(sql, sysDepartmentIds[0]).Exec()
- if e != nil {
- return e
- }
- }
- return nil
- })
- return
- }
- func DeleteSysDepartmentByIdV2(sysDepartmentIds []int, level int) (err error) {
- o := orm.NewOrm()
- err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
- // sql := `DELETE FROM sys_department WHERE sys_department_id IN (?) `
- _, e := txOrm.QueryTable(&SysDepartment{}).
- Filter("sys_department_id__in", sysDepartmentIds).
- Delete()
- if e != nil {
- return e
- }
- sql := `UPDATE sys_user SET `
- for i := level; i <= utils.MaxDepartmentLevel; i++ {
- sql += fmt.Sprintf("sys_department_id%d=0 ", i)
- if i != utils.MaxDepartmentLevel {
- sql += ","
- }
- }
- sql += fmt.Sprintf("WHERE sys_department_id%d=?", level)
- _, e = txOrm.Raw(sql, sysDepartmentIds[0]).Exec()
- if e != nil {
- return e
- }
- return nil
- })
- return
- }
- func SaveSysDepartmentName(sysDepartment *SysDepartment) (err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM user WHERE seller_department_id=?`
- var userList []*User
- _, err = o.Raw(sql, sysDepartment.SysDepartmentId).QueryRows(&userList)
- if err != nil {
- return
- }
- var pars []interface{}
- pars = append(pars, sysDepartment.SysDepartmentName)
- for _, user := range userList {
- pars = append(pars, user.UserId)
- }
- err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
- _, e := txOrm.Update(sysDepartment, "sys_department_name")
- if e != nil {
- return e
- }
- if len(userList) > 0 {
- sql := `UPDATE user SET seller_department_name=? WHERE user_id IN (` + utils.GetOrmReplaceHolder(len(userList)) + `)`
- _, e = txOrm.Raw(sql, pars).Exec()
- if e != nil {
- return e
- }
- }
- return nil
- })
- return
- }
- func UpdateDepartmentSortByIds(sysDepartmentIds []int) (err error) {
- o := orm.NewOrm()
- err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
- sql := `UPDATE sys_department SET sort=? WHERE sys_department_id=?`
- for i, depId := range sysDepartmentIds {
- _, e := txOrm.Raw(sql, i+1, depId).Exec()
- if e != nil {
- return e
- }
- }
- return nil
- })
- return
- }
- func GetSysDepartmentById(sysDepartmentId int) (item *SysDepartment, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department WHERE sys_department_id=? `
- err = o.Raw(sql, sysDepartmentId).QueryRow(&item)
- return
- }
- func GetSysDepartments() (items []*SysDepartment, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- func GetSysDepartmentList() (items []*SysDepartmentList, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department ORDER BY sort`
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- func GetSysDepartmentCountById(sysDepartmentId int) (count int, err error) {
- o := orm.NewOrm()
- sql := `SELECT COUNT(1) AS count FROM sys_department WHERE sys_department_id=?`
- err = o.Raw(sql, sysDepartmentId).QueryRow(&count)
- return
- }
- func GetSysDepartmentCountByParentId(parentId int, sysDepartmentName string) (count int, err error) {
- o := orm.NewOrm()
- sql := `SELECT COUNT(1) AS count FROM sys_department WHERE parent_id=? AND sys_department_name=?`
- err = o.Raw(sql, parentId, sysDepartmentName).QueryRow(&count)
- return
- }
- func GetSysDepartmentCountByName(sysDepartmentName string) (count int, err error) {
- o := orm.NewOrm()
- sql := `SELECT COUNT(1) AS count FROM sys_department WHERE sys_department_name=?`
- err = o.Raw(sql, sysDepartmentName).QueryRow(&count)
- return
- }
- func GetSysDepartmentByName(sysDepartmentName string) (item *SysDepartment, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department WHERE sys_department_name=?`
- err = o.Raw(sql, sysDepartmentName).QueryRow(&item)
- return
- }
- func GetChildSysDepartmentListById(sysDepartmentId int) (items []*SysDepartmentList, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department WHERE parent_id=? ORDER BY sort ASC, sys_department_id ASC`
- _, err = o.Raw(sql, sysDepartmentId).QueryRows(&items)
- return
- }
- func GetChildSysDepartmentListByIds(sysDepartmentIds []int) (items []*SysDepartmentList, err error) {
- if len(sysDepartmentIds) == 0 {
- return
- }
- o := orm.NewOrm()
- sql := `SELECT * FROM sys_department WHERE parent_id in (` + utils.GetOrmReplaceHolder(len(sysDepartmentIds)) + `) `
- _, err = o.Raw(sql, sysDepartmentIds).QueryRows(&items)
- return
- }
|