|
@@ -29,10 +29,10 @@ type TreeService interface {
|
|
|
ValidRule(ctx iris.Context) (viewmodels.Tree, error)
|
|
|
Create(data viewmodels.Tree) error
|
|
|
GetAllProject(int) *viewmodels.Tree
|
|
|
- Rename(viewmodels.Tree) error
|
|
|
- GetFolderAndBid(string) ([]models.CmTree, error)
|
|
|
- DeleteFolderAndBid(string) error
|
|
|
- Move(int, int) error
|
|
|
+ Rename(treevm viewmodels.Tree, projectId int) error
|
|
|
+ GetFolderAndBid(id int, projectId int) ([]models.CmTree, error)
|
|
|
+ DeleteFolderAndBid(id int, projectId int) error
|
|
|
+ Move(id int, moveId int, projectId int) error
|
|
|
}
|
|
|
|
|
|
//返回service操作类
|
|
@@ -50,7 +50,7 @@ func NewTreeService() TreeService {
|
|
|
// 文件夹规则验证
|
|
|
func (s *treeService) ValidRule(ctx iris.Context) (viewmodels.Tree, error) {
|
|
|
folderVaild := viewmodels.Tree{}
|
|
|
- err := ctx.ReadForm(&folderVaild)
|
|
|
+ err := ctx.ReadJSON(&folderVaild)
|
|
|
if err != nil {
|
|
|
log.Println("folder-ValidRule-ReadForm转换异常, error=", err)
|
|
|
return folderVaild, err
|
|
@@ -92,11 +92,18 @@ func (s *treeService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
folder.ProjectId = projectId
|
|
|
folder.Depth = data.Depth + 1
|
|
|
folder.Serial = serial
|
|
|
- folder.Leaf = true
|
|
|
+ folder.Ancounts = data.Ancounts
|
|
|
+ folder.Isfolder = data.Isfolder
|
|
|
+ folder.IsEnd = false
|
|
|
+ //folder.Leaf = true
|
|
|
+ folder.HasFolder = false
|
|
|
+ folder.IsBid = false
|
|
|
folder.CreateTime = data.CreateTime.Format(conf.SysTimeform)
|
|
|
folderlist = append(folderlist, folder)
|
|
|
}
|
|
|
|
|
|
+ //fmt.Println(folderlist)
|
|
|
+
|
|
|
var data []*viewmodels.Tree
|
|
|
data = make([]*viewmodels.Tree, 0)
|
|
|
for i, _ := range folderlist {
|
|
@@ -116,6 +123,7 @@ func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
// 类型校验
|
|
|
folder := models.CmTree{}
|
|
|
folder.Name = data.Name
|
|
|
+ // 项目ID
|
|
|
ProjectId, err := strconv.Atoi(data.ProjectId)
|
|
|
if err != nil {
|
|
|
return err
|
|
@@ -149,7 +157,9 @@ func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
}
|
|
|
} else {
|
|
|
// 1-创建次目录-获得次级目录最大序号
|
|
|
- treeNode := s.dao.Get(IdInt)
|
|
|
+ treeNode := s.dao.Get(IdInt, ProjectId)
|
|
|
+ // 去除前端depth作用-在这里获得下级目录的深度
|
|
|
+ depth = treeNode.Depth + 1
|
|
|
if treeNode.Id == 0 {
|
|
|
return errors.New("上级目录不正确")
|
|
|
}
|
|
@@ -178,7 +188,7 @@ func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
}
|
|
|
|
|
|
// 重命名
|
|
|
-func (s *treeService) Rename(data viewmodels.Tree) error {
|
|
|
+func (s *treeService) Rename(data viewmodels.Tree, projectId int) error {
|
|
|
// 获得该目录ID
|
|
|
Id, err := comm.AesDecrypt(data.Id, conf.SignSecret)
|
|
|
if err != nil {
|
|
@@ -190,7 +200,10 @@ func (s *treeService) Rename(data viewmodels.Tree) error {
|
|
|
}
|
|
|
|
|
|
// 获得树信息
|
|
|
- treeData := s.dao.Get(IdInt)
|
|
|
+ treeData := s.dao.Get(IdInt, projectId)
|
|
|
+ if treeData.Id == 0 {
|
|
|
+ return errors.New("修改的目录不合法")
|
|
|
+ }
|
|
|
treeNode := models.CmTree{}
|
|
|
treeNode.Id = IdInt
|
|
|
treeNode.Name = data.Name
|
|
@@ -210,18 +223,21 @@ func (s *treeService) Rename(data viewmodels.Tree) error {
|
|
|
}
|
|
|
|
|
|
// 获得该目录下所有的目录和标段
|
|
|
-func (s *treeService) GetFolderAndBid(id string) ([]models.CmTree, error) {
|
|
|
+func (s *treeService) GetFolderAndBid(id int, projectId int) ([]models.CmTree, error) {
|
|
|
// 获得该目录ID
|
|
|
- id, err := comm.AesDecrypt(id, conf.SignSecret)
|
|
|
- if err != nil {
|
|
|
- return nil, errors.New("目录解析错误")
|
|
|
- }
|
|
|
- IdInt, err := strconv.Atoi(id)
|
|
|
- if err != nil {
|
|
|
- return nil, errors.New("目录解析错误")
|
|
|
- }
|
|
|
+ // id, err := comm.AesDecrypt(id, conf.SignSecret)
|
|
|
+ // if err != nil {
|
|
|
+ // return nil, errors.New("目录解析错误")
|
|
|
+ // }
|
|
|
+ // IdInt, err := strconv.Atoi(id)
|
|
|
+ // if err != nil {
|
|
|
+ // return nil, errors.New("目录解析错误")
|
|
|
+ // }
|
|
|
// 获得该目录下所有数据
|
|
|
- folder := s.dao.Get(IdInt)
|
|
|
+ folder := s.dao.Get(id, projectId)
|
|
|
+ if folder.Id == 0 {
|
|
|
+ return nil, errors.New("目录不合法")
|
|
|
+ }
|
|
|
attribution := fmt.Sprintf("%s%d-", folder.Attribution, folder.Serial)
|
|
|
// 获得目录归属
|
|
|
dataList := s.dao.GetFolderAndBid(folder.ProjectId, attribution)
|
|
@@ -229,21 +245,24 @@ func (s *treeService) GetFolderAndBid(id string) ([]models.CmTree, error) {
|
|
|
}
|
|
|
|
|
|
// 删除该目录和所属的目录和标段
|
|
|
-func (s *treeService) DeleteFolderAndBid(id string) error {
|
|
|
+func (s *treeService) DeleteFolderAndBid(id int, projectId int) error {
|
|
|
// 获得该目录ID
|
|
|
- id, err := comm.AesDecrypt(id, conf.SignSecret)
|
|
|
- if err != nil {
|
|
|
- return errors.New("目录解析错误")
|
|
|
- }
|
|
|
- IdInt, err := strconv.Atoi(id)
|
|
|
- if err != nil {
|
|
|
- return errors.New("目录解析错误")
|
|
|
- }
|
|
|
+ // id, err := comm.AesDecrypt(id, conf.SignSecret)
|
|
|
+ // if err != nil {
|
|
|
+ // return errors.New("目录解析错误")
|
|
|
+ // }
|
|
|
+ // IdInt, err := strconv.Atoi(id)
|
|
|
+ // if err != nil {
|
|
|
+ // return errors.New("目录解析错误")
|
|
|
+ // }
|
|
|
// 获得该目录下 归属关系
|
|
|
- folder := s.dao.Get(IdInt)
|
|
|
+ folder := s.dao.Get(id, projectId)
|
|
|
+ if folder.Id == 0 {
|
|
|
+ return errors.New("目录不合法")
|
|
|
+ }
|
|
|
attribution := fmt.Sprintf("%s%d-", folder.Attribution, folder.Serial)
|
|
|
// --逻辑删除 目录和数据
|
|
|
- err = s.dao.DeleteFolderAndBid(folder.Id, folder.ProjectId, attribution)
|
|
|
+ err := s.dao.DeleteFolderAndBid(folder.Id, folder.ProjectId, attribution)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -253,13 +272,13 @@ func (s *treeService) DeleteFolderAndBid(id string) error {
|
|
|
}
|
|
|
|
|
|
// 移动目录
|
|
|
-func (s *treeService) Move(id int, moveId int) error {
|
|
|
+func (s *treeService) Move(id int, moveId int, projectId int) error {
|
|
|
// 获得项目目录
|
|
|
- treeNode := s.dao.Get(id)
|
|
|
+ treeNode := s.dao.Get(id, projectId)
|
|
|
if treeNode.Id == 0 {
|
|
|
return errors.New("目录或标段解析错误")
|
|
|
}
|
|
|
- moveFolder := s.dao.Get(moveId)
|
|
|
+ moveFolder := s.dao.Get(moveId, projectId)
|
|
|
if moveFolder.Id == 0 {
|
|
|
return errors.New("目录解析错误")
|
|
|
}
|
|
@@ -300,6 +319,13 @@ func maketree(Data []*viewmodels.Tree, node *viewmodels.Tree) { //参数为父
|
|
|
// fmt.Println(*v)
|
|
|
// } //打印
|
|
|
|
|
|
+ // 子节点总数
|
|
|
+ Total := len(childs)
|
|
|
+ node.ChildsTotal = Total
|
|
|
+ // 标记最后一个元素
|
|
|
+ end := Total - 1
|
|
|
+ childs[end].IsEnd = true
|
|
|
+
|
|
|
// 往父节点添加子节点
|
|
|
node.Children = append(node.Children, childs[0:]...) //添加子节点
|
|
|
for _, v := range childs { //查询子节点的子节点,并添加到子节点
|
|
@@ -307,9 +333,16 @@ func maketree(Data []*viewmodels.Tree, node *viewmodels.Tree) { //参数为父
|
|
|
if has {
|
|
|
// 递归添加节点
|
|
|
maketree(Data, v)
|
|
|
+ }
|
|
|
+ // else {
|
|
|
+ // // 叶子节点
|
|
|
+ // node.Leaf = false
|
|
|
+ // }
|
|
|
+ // 目录下是否包含标段
|
|
|
+ if v.Isfolder == 0 {
|
|
|
+ node.IsBid = true
|
|
|
} else {
|
|
|
- // 叶子节点
|
|
|
- node.Leaf = false
|
|
|
+ node.HasFolder = true
|
|
|
}
|
|
|
}
|
|
|
}
|