feat: restrict permission roles

This commit is contained in:
Frudrax Cheng
2026-06-06 13:50:56 +08:00
parent a55f515930
commit 5edb25ac4e
17 changed files with 229 additions and 175 deletions
+6 -6
View File
@@ -213,7 +213,7 @@ func (s *ProjectOrdersService) Update(
return &order, nil
}
// SubmitCompletion 技术员提交完成资料,进入待完成确认状态
// SubmitCompletion 工单负责人提交完成资料,进入待完成确认状态
func (s *ProjectOrdersService) SubmitCompletion(
serialNumber string,
dto models.SubmitProjectCompletionDTO,
@@ -395,7 +395,7 @@ func (s *ProjectOrdersService) EngineerComplete(serialNumber string, dto models.
return s.PublicQuery(normalized)
}
// Reassign 重新分配技术员(仅管理员)
// Reassign 重新分配工单负责人(仅管理员)
func (s *ProjectOrdersService) Reassign(serialNumber string, technicianID uint) (*models.ProjectOrder, error) {
var order models.ProjectOrder
result := database.DB.Where("serial_number = ?", normalizeProjectOrderSerial(serialNumber)).First(&order)
@@ -409,15 +409,15 @@ func (s *ProjectOrdersService) Reassign(serialNumber string, technicianID uint)
var technician models.User
if err := database.DB.First(&technician, technicianID).Error; err != nil {
return nil, errors.New("指定的技术员不存在")
return nil, errors.New("指定的工单负责人不存在")
}
if technician.Role != "admin" && technician.Role != "technician" {
return nil, errors.New("指定的用户不是技术员或管理员")
if !models.IsAssignableWorkOrderRole(technician.Role) {
return nil, errors.New("指定的用户不是可派单人员")
}
order.TechnicianID = &technicianID
if err := database.DB.Save(&order).Error; err != nil {
return nil, fmt.Errorf("重新分配技术员失败: %w", err)
return nil, fmt.Errorf("重新分配工单负责人失败: %w", err)
}
_ = database.DB.Preload("Technician").Preload("Creator").Where("serial_number = ?", order.SerialNumber).First(&order)