...
|
...
|
@@ -7,6 +7,7 @@ import ( |
|
|
"oppmg/models"
|
|
|
"oppmg/utils"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
|
"github.com/astaxie/beego/orm"
|
|
|
)
|
...
|
...
|
@@ -16,7 +17,7 @@ type ModulePositionData struct { |
|
|
Name string `json:"nick_name"`
|
|
|
ParentId int64 `json:"parent_id"`
|
|
|
CompanyId int64 `json:"company_id"`
|
|
|
Status string `json:"status"`
|
|
|
Ids []int64 `json:"ids"`
|
|
|
}
|
|
|
|
|
|
var _ PlatformAction = ModulePositionData{}
|
...
|
...
|
@@ -161,7 +162,75 @@ func AddPosition(data ModulePositionData) error { |
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
func DeletePosition(data ModulePositionData) error {
|
|
|
|
|
|
func DeletePosition(ids []int64, ucompanyid int64) error {
|
|
|
//检查是否可以被删除
|
|
|
var (
|
|
|
//根据参数获取的职位
|
|
|
positionDelete []*models.Position
|
|
|
//最终需要操作的职位
|
|
|
toDelete = make(map[int64]*models.Position)
|
|
|
companyinfo *models.Company
|
|
|
err error
|
|
|
)
|
|
|
const (
|
|
|
//获取部门子集,
|
|
|
dataSql0 string = `SELECT id,relation FROM position WHERE relation LIKE ? AND delete_at = 0 `
|
|
|
)
|
|
|
companyinfo, err = models.GetCompanyByUCenter(ucompanyid)
|
|
|
if err != nil {
|
|
|
e := fmt.Errorf("获取公司数据失败")
|
|
|
log.Error(e.Error())
|
|
|
return e
|
|
|
}
|
|
|
for _, id := range ids {
|
|
|
var p *models.Position
|
|
|
p, err := models.GetPositionById(id)
|
|
|
if err != nil {
|
|
|
log.Error("获取职位失败Id:%d,err:%s", id, err)
|
|
|
continue
|
|
|
}
|
|
|
if p.CompanyId != companyinfo.Id {
|
|
|
log.Error("公司id不匹配")
|
|
|
return errors.New("公司id不匹配")
|
|
|
}
|
|
|
positionDelete = append(positionDelete, p)
|
|
|
toDelete[p.Id] = p
|
|
|
}
|
|
|
for _, pos := range positionDelete {
|
|
|
var positionsubset []models.Position
|
|
|
relationLike := pos.Relation + "%"
|
|
|
err := utils.ExecuteQueryAll(&positionsubset, dataSql0, relationLike)
|
|
|
if err != nil {
|
|
|
e := fmt.Errorf("EXECUTE SQL err:%s", err)
|
|
|
log.Error(e.Error())
|
|
|
return e
|
|
|
}
|
|
|
for k, subset := range positionsubset {
|
|
|
if _, ok := toDelete[subset.Id]; !ok {
|
|
|
toDelete[subset.Id] = &positionsubset[k]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var (
|
|
|
deleteIds []string
|
|
|
dataSql2 string = `update position set delete_at=%s where id IN (%s)`
|
|
|
nowTime string = time.Now().Format("2006-01-02 15:04:05")
|
|
|
)
|
|
|
for k, _ := range toDelete {
|
|
|
deleteIds = append(deleteIds, fmt.Sprint(k))
|
|
|
}
|
|
|
if len(deleteIds) == 0 {
|
|
|
return nil
|
|
|
}
|
|
|
dataSql2 = fmt.Sprintf(dataSql2, nowTime, strings.Join(deleteIds, ","))
|
|
|
o := orm.NewOrm()
|
|
|
o.Begin()
|
|
|
err = utils.ExecuteSQLWithOrmer(o, dataSql2)
|
|
|
if err != nil {
|
|
|
e := fmt.Errorf("EXCUTE SQL ERR:%s", err)
|
|
|
return e
|
|
|
}
|
|
|
o.Commit()
|
|
|
return nil
|
|
|
} |
...
|
...
|
|