|
@@ -28,7 +28,8 @@ type TreeService interface {
|
|
|
//ValidManager(code string, account string, password string) error
|
|
|
ValidRule(ctx iris.Context) (viewmodels.Tree, error)
|
|
|
Create(data viewmodels.Tree) error
|
|
|
- GetAllProject(int) *viewmodels.Tree
|
|
|
+ GetAllProject(projectId int) *viewmodels.Tree
|
|
|
+ GetAllContract(projectId int) *viewmodels.Tree
|
|
|
Rename(treevm viewmodels.Tree, projectId int) error
|
|
|
GetFolderAndBid(id int, projectId int) ([]models.CmTree, error)
|
|
|
DeleteFolderAndBid(id int, projectId int) error
|
|
@@ -67,7 +68,6 @@ func (s *treeService) ValidRule(ctx iris.Context) (viewmodels.Tree, error) {
|
|
|
|
|
|
// 获得项目下 相关文件夹-整个树结构
|
|
|
func (s *treeService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
-
|
|
|
datalist := s.dao.GetAllTree(projectId)
|
|
|
folderlist := make([]viewmodels.Tree, 0)
|
|
|
// 生成根
|
|
@@ -118,6 +118,59 @@ func (s *treeService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
return node
|
|
|
}
|
|
|
|
|
|
+// 获得合同管理的目录
|
|
|
+func (s *treeService) GetAllContract(projectId int) *viewmodels.Tree {
|
|
|
+ datalist := s.dao.GetAllTree(projectId)
|
|
|
+ folderlist := make([]viewmodels.Tree, 0)
|
|
|
+ // 生成根
|
|
|
+ folder := viewmodels.Tree{}
|
|
|
+ id, _ := comm.AesEncrypt(strconv.Itoa(0), conf.SignSecret)
|
|
|
+ parentId, _ := comm.AesEncrypt(strconv.Itoa(-1), conf.SignSecret)
|
|
|
+ folder.Id = id
|
|
|
+ folder.Name = "root"
|
|
|
+ folder.ParentId = parentId
|
|
|
+ folderlist = append(folderlist, folder)
|
|
|
+ // 加入数据
|
|
|
+ for _, data := range datalist {
|
|
|
+ folder := viewmodels.Tree{}
|
|
|
+ id, _ := comm.AesEncrypt(strconv.Itoa(data.Id), conf.SignSecret)
|
|
|
+ parentId, _ := comm.AesEncrypt(strconv.Itoa(data.ParentId), conf.SignSecret)
|
|
|
+ projectId, _ := comm.AesEncrypt(strconv.Itoa(data.ProjectId), conf.SignSecret)
|
|
|
+ serial, _ := comm.AesEncrypt(strconv.Itoa(data.Serial), conf.SignSecret)
|
|
|
+ folder.Id = id
|
|
|
+ folder.Name = data.Name
|
|
|
+ folder.ParentId = parentId
|
|
|
+ folder.ProjectId = projectId
|
|
|
+ folder.Depth = data.Depth + 1
|
|
|
+ folder.Serial = serial
|
|
|
+ folder.Ancounts = data.Ancounts
|
|
|
+ // 合同数据
|
|
|
+
|
|
|
+ folder.Isfolder = data.Isfolder
|
|
|
+ folder.IsEnd = false
|
|
|
+
|
|
|
+ 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 {
|
|
|
+ var a *viewmodels.Tree
|
|
|
+ a = &folderlist[i]
|
|
|
+ data = append(data, a)
|
|
|
+ }
|
|
|
+
|
|
|
+ node := &folderlist[0] //父节点
|
|
|
+ maketree(data, node) //调用生成tree
|
|
|
+ //transformjson(node) //转化为json
|
|
|
+ return node
|
|
|
+}
|
|
|
+
|
|
|
// 新增一个文件夹
|
|
|
func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
// 类型校验
|
|
@@ -275,15 +328,55 @@ func (s *treeService) DeleteFolderAndBid(id int, projectId int) error {
|
|
|
func (s *treeService) Move(id int, moveId int, projectId int) error {
|
|
|
// 获得项目目录
|
|
|
treeNode := s.dao.Get(id, projectId)
|
|
|
+
|
|
|
if treeNode.Id == 0 {
|
|
|
return errors.New("目录或标段解析错误")
|
|
|
}
|
|
|
- moveFolder := s.dao.Get(moveId, projectId)
|
|
|
- if moveFolder.Id == 0 {
|
|
|
- return errors.New("目录解析错误")
|
|
|
+
|
|
|
+ targetFolder := &models.CmTree{}
|
|
|
+ // id为0是跟目录
|
|
|
+ if moveId == 0 {
|
|
|
+ // id
|
|
|
+ targetFolder.Id = 0
|
|
|
+ // 1.获得最大序号
|
|
|
+ // seriallist := s.dao.GetALLDepthByAttribution(0, projectId, "")
|
|
|
+ // maxIndex := len(seriallist)
|
|
|
+ // serial := 0
|
|
|
+ // if maxIndex != 0 {
|
|
|
+ // serial = seriallist[maxIndex-1].Serial + 1
|
|
|
+ // }
|
|
|
+ // targetFolder.Serial = serial
|
|
|
+ targetFolder.Serial = 0
|
|
|
+ // 2.归属
|
|
|
+ targetFolder.Attribution = ""
|
|
|
+ // 3.深度depth-根目录为-1
|
|
|
+ targetFolder.Depth = -1
|
|
|
+ // 4.为目录
|
|
|
+ targetFolder.Isfolder = 1
|
|
|
+ // 5.项目ID
|
|
|
+ targetFolder.ProjectId = projectId
|
|
|
+
|
|
|
+ // fmt.Println(targetFolder)
|
|
|
+ // if targetFolder.Id == 0 {
|
|
|
+ // return errors.New("目录解析错误-测试")
|
|
|
+ // }
|
|
|
+ } else {
|
|
|
+ targetFolder = s.dao.Get(moveId, projectId)
|
|
|
+ if targetFolder.Id == 0 {
|
|
|
+ return errors.New("目录解析错误")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 目录必须是目录
|
|
|
+ if targetFolder.Isfolder == 0 {
|
|
|
+ return errors.New("目标不是文件夹")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 目录的目标不能是自己
|
|
|
+ if id == moveId {
|
|
|
+ return errors.New("目标目录是原目录-不能移动")
|
|
|
}
|
|
|
|
|
|
- // TODO
|
|
|
// 移动的是目录
|
|
|
if treeNode.Isfolder == 1 {
|
|
|
// 1.目录下不能有标段
|
|
@@ -301,7 +394,7 @@ func (s *treeService) Move(id int, moveId int, projectId int) error {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- err := s.dao.Move(treeNode, moveFolder)
|
|
|
+ err := s.dao.Move(treeNode, targetFolder)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|