diff --git a/internal/service/sys_deploy_file_service.go b/internal/service/sys_deploy_file_service.go index cbd0ed8..ae484ba 100644 --- a/internal/service/sys_deploy_file_service.go +++ b/internal/service/sys_deploy_file_service.go @@ -65,8 +65,14 @@ func (s *SysDeployFileService) Create(c *gin.Context) serializer.Response { // GetByID 根据ID获取部署文件记录 func (s *SysDeployFileService) GetByID(c *gin.Context) serializer.Response { + // 获取当前用户ID + currentUserId := c.GetString("id") + if currentUserId == "" { + return serializer.ParamErr("用户信息获取失败!", nil) + } + var deployFile model.SysDeployFile - if err := s.Db.Where("deploy_id = ? AND del_flag = ?", c.Param("id"), "0").First(&deployFile).Error; err != nil { + if err := s.Db.Where("deploy_id = ? AND del_flag = ? AND create_by = ?", c.Param("id"), "0", currentUserId).First(&deployFile).Error; err != nil { logger.Error(c, "获取部署文件记录失败!") return serializer.DBErr("获取部署文件记录失败!", err) } @@ -87,16 +93,29 @@ func (s *SysDeployFileService) UpdateByID(c *gin.Context) serializer.Response { return serializer.ParamErr("id不可为空!", fmt.Errorf("id不可为空")) } + // 获取当前用户ID + currentUserId := c.GetString("id") + if currentUserId == "" { + return serializer.ParamErr("用户信息获取失败!", nil) + } + + // 检查权限:只能更新自己创建的数据 + var existingDeployFile model.SysDeployFile + if err := s.Db.Where("deploy_id = ? AND del_flag = ? AND create_by = ?", id, "0", currentUserId).First(&existingDeployFile).Error; err != nil { + logger.Error(c, "部署文件记录不存在或无权限访问!") + return serializer.ParamErr("部署文件记录不存在或无权限访问!", err) + } + // 设置更新时间 now := time.Now() deployFile.UpdateTime = &now // 获取当前用户 - if updateBy := c.GetString("id"); updateBy != "" { + if updateBy := currentUserId; updateBy != "" { deployFile.UpdateBy = updateBy } - if err := s.Db.Model(&deployFile).Where("deploy_id = ? AND del_flag = ?", id, "0").Updates(&deployFile).Error; err != nil { + if err := s.Db.Model(&deployFile).Where("deploy_id = ? AND del_flag = ? AND create_by = ?", id, "0", currentUserId).Updates(&deployFile).Error; err != nil { logger.Error(c, "更新部署文件记录失败!") return serializer.DBErr("更新部署文件记录失败!", err) } @@ -111,18 +130,24 @@ func (s *SysDeployFileService) DeleteByID(c *gin.Context) serializer.Response { return serializer.ParamErr("id不可为空!", fmt.Errorf("id不可为空")) } + // 获取当前用户ID + currentUserId := c.GetString("id") + if currentUserId == "" { + return serializer.ParamErr("用户信息获取失败!", nil) + } + // 软删除 data := map[string]any{ "del_flag": "1", "update_time": time.Now(), - "update_by": c.GetString("id"), + "update_by": currentUserId, } // 删除已经部署的文件夹 deployFile := model.SysDeployFile{} - if err := s.Db.Where("deploy_id = ?", id).First(&deployFile).Error; err != nil { - logger.Error(c, "获取部署文件记录失败!") - return serializer.DBErr("获取部署文件记录失败!", err) + if err := s.Db.Where("deploy_id = ? AND create_by = ?", id, currentUserId).First(&deployFile).Error; err != nil { + logger.Error(c, "获取部署文件记录失败或无权限访问!") + return serializer.DBErr("获取部署文件记录失败或无权限访问!", err) } // 删除 /home/:projectName @@ -133,7 +158,7 @@ func (s *SysDeployFileService) DeleteByID(c *gin.Context) serializer.Response { } // 删除数据库记录 - if err := s.Db.Model(&model.SysDeployFile{}).Where("deploy_id = ?", id).Updates(data).Error; err != nil { + if err := s.Db.Model(&model.SysDeployFile{}).Where("deploy_id = ? AND create_by = ?", id, currentUserId).Updates(data).Error; err != nil { logger.Error(c, "删除部署文件记录失败!") return serializer.DBErr("删除部署文件记录失败!", err) } @@ -158,6 +183,12 @@ func (s *SysDeployFileService) GetByCondition(c *gin.Context) serializer.Respons var deployFiles []model.SysDeployFile offset := (p.Page - 1) * p.Limit + // 获取当前用户ID + currentUserId := c.GetString("id") + if currentUserId == "" { + return serializer.ParamErr("用户信息获取失败!", nil) + } + // 构建基础查询 db := s.Db.Model(&model.SysDeployFile{}) @@ -166,6 +197,9 @@ func (s *SysDeployFileService) GetByCondition(c *gin.Context) serializer.Respons db = db.Where(queryStr, args...) } + // 添加用户权限过滤:只能查询自己创建的数据 + db = db.Where("create_by = ?", currentUserId) + // 排序 if p.Sort != "" { db = db.Order(p.Sort)