优化backend端相关功能

This commit is contained in:
2026-09-05 17:28:40 +08:00
parent 3d53f03246
commit 0f74abc5d4
25 changed files with 781 additions and 440 deletions
+29 -9
View File
@@ -594,6 +594,9 @@ func (c *BackendEmployeeFileController) Create() {
return
}
// 建档后同步通讯录(工作邮箱、家庭地址以档案为准)
SyncContactOnEmployeeFileChange(uint64(tid), item.EmployeeID)
c.efOk(item)
}
@@ -654,6 +657,9 @@ func (c *BackendEmployeeFileController) Update() {
return
}
// 档案变更后同步通讯录(工作邮箱、家庭地址以档案为准)
SyncContactOnEmployeeFileChange(uint64(tid), item.EmployeeID)
c.efOk(item)
}
@@ -718,7 +724,12 @@ func (c *BackendEmployeeFileController) UpdateCertificates() {
c.efOk(item)
}
// Delete DELETE /backend/oa/employeefile/delete/:id 软删除档案。
// Delete DELETE /backend/oa/employeefile/delete/:id 档案离职/禁用(档案不做删除)。
//
// 与员工同理:人事档案属于企业数据,通讯录(yz_backend_erp_contact)也以 employee_id 关联,
// 软删档案会让通讯录里对应的人失去数据来源。因此这里只把在职状态置为"离职"(3),
// 不写 is_deleted / delete_time,档案与通讯录记录始终保留可查。
// 在职状态调整(试用/正式/离职)走 update 接口即可,这里只是给"删除"动作一个不毁数据的语义。
func (c *BackendEmployeeFileController) Delete() {
claims, err := c.efClaims()
if err != nil {
@@ -733,15 +744,24 @@ func (c *BackendEmployeeFileController) Delete() {
return
}
var item models.BackendEmployeeFile
if err := c.efQuery(tid).Filter("id", id).One(&item); err != nil {
c.efErr(404, 404, "档案不存在")
return
}
now := time.Now()
n, err := c.efQuery(tid).Filter("id", id).
Update(map[string]interface{}{
"IsDeleted": int8(1),
"DeleteTime": now,
"UpdateTime": now,
})
if err != nil || n == 0 {
c.efErr(404, 404, "档案不存在或已删除")
// 离职日期留空时补当天,保证档案资料(离职需填离职日期)完整
if item.LeaveDate == nil {
today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
item.LeaveDate = &today
}
item.EmploymentStatus = 3
item.UpdateTime = &now
if _, err := models.Orm.Update(&item, "EmploymentStatus", "LeaveDate", "UpdateTime"); err != nil {
log.Printf("员工档案离职失败: tid=%d file_id=%d err=%v", tid, id, err)
c.efErr(500, 500, "离职操作失败")
return
}