|
@@ -29,23 +29,25 @@ type TreeService interface {
|
|
|
ValidRule(ctx iris.Context) (viewmodels.Tree, error)
|
|
|
Create(data viewmodels.Tree) error
|
|
|
GetAllProject(int) *viewmodels.Tree
|
|
|
- Rename(data viewmodels.Tree) error
|
|
|
+ Rename(viewmodels.Tree) error
|
|
|
+ GetFolderAndBid(string) ([]models.CmTree, error)
|
|
|
+ DeleteFolderAndBid(string) error
|
|
|
}
|
|
|
|
|
|
//返回service操作类
|
|
|
-type foldertService struct {
|
|
|
+type treeService struct {
|
|
|
dao *dao.TreeDao
|
|
|
}
|
|
|
|
|
|
//创建项目service
|
|
|
func NewTreeService() TreeService {
|
|
|
- return &foldertService{
|
|
|
+ return &treeService{
|
|
|
dao: dao.NewTreeDao(datasource.InstanceDbMaster()),
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 文件夹规则验证
|
|
|
-func (s *foldertService) ValidRule(ctx iris.Context) (viewmodels.Tree, error) {
|
|
|
+func (s *treeService) ValidRule(ctx iris.Context) (viewmodels.Tree, error) {
|
|
|
folderVaild := viewmodels.Tree{}
|
|
|
err := ctx.ReadForm(&folderVaild)
|
|
|
if err != nil {
|
|
@@ -62,8 +64,8 @@ func (s *foldertService) ValidRule(ctx iris.Context) (viewmodels.Tree, error) {
|
|
|
return folderVaild, nil
|
|
|
}
|
|
|
|
|
|
-// 获得项目文件夹相关
|
|
|
-func (s *foldertService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
+// 获得项目下 相关文件夹-整个树结构
|
|
|
+func (s *treeService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
|
|
|
datalist := s.dao.GetAllTree(projectId)
|
|
|
folderlist := make([]viewmodels.Tree, 0)
|
|
@@ -109,7 +111,7 @@ func (s *foldertService) GetAllProject(projectId int) *viewmodels.Tree {
|
|
|
}
|
|
|
|
|
|
// 新增一个文件夹
|
|
|
-func (s *foldertService) Create(data viewmodels.Tree) error {
|
|
|
+func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
// 类型校验
|
|
|
folder := models.CmTree{}
|
|
|
folder.Name = data.Name
|
|
@@ -132,7 +134,6 @@ func (s *foldertService) Create(data viewmodels.Tree) error {
|
|
|
bidlist := s.dao.GetBidsection(IdInt)
|
|
|
if len(bidlist) > 0 {
|
|
|
return errors.New("该文件夹已存在标段,不能在新增目录")
|
|
|
-
|
|
|
}
|
|
|
|
|
|
// 获得该深度的文件夹最大序号
|
|
@@ -168,7 +169,7 @@ func (s *foldertService) Create(data viewmodels.Tree) error {
|
|
|
}
|
|
|
|
|
|
// 重命名
|
|
|
-func (s *foldertService) Rename(data viewmodels.Tree) error {
|
|
|
+func (s *treeService) Rename(data viewmodels.Tree) error {
|
|
|
// 获得该目录ID
|
|
|
Id, err := comm.AesDecrypt(data.Id, conf.SignSecret)
|
|
|
if err != nil {
|
|
@@ -189,6 +190,49 @@ func (s *foldertService) Rename(data viewmodels.Tree) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// 获得该目录下所有的目录和标段
|
|
|
+func (s *treeService) GetFolderAndBid(id string) ([]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("目录解析错误")
|
|
|
+ }
|
|
|
+ // 获得该目录下所有数据
|
|
|
+ folder := s.dao.Get(IdInt)
|
|
|
+ attribution := fmt.Sprintf("%s%d-", folder.Attribution, folder.Serial)
|
|
|
+ // 获得目录归属
|
|
|
+ dataList := s.dao.GetFolderAndBid(folder.ProjectId, attribution)
|
|
|
+ return dataList, nil
|
|
|
+}
|
|
|
+
|
|
|
+// 删除该目录和所属的目录和标段
|
|
|
+func (s *treeService) DeleteFolderAndBid(id string) 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("目录解析错误")
|
|
|
+ }
|
|
|
+ // 获得该目录下 归属关系
|
|
|
+ folder := s.dao.Get(IdInt)
|
|
|
+ attribution := fmt.Sprintf("%s%d-", folder.Attribution, folder.Serial)
|
|
|
+ // --逻辑删除 目录和数据
|
|
|
+ err = s.dao.DeleteFolderAndBid(folder.Id, folder.ProjectId, attribution)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // TODO -加入堆栈 物理删除数据
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
// 创建一颗树
|
|
|
func maketree(Data []*viewmodels.Tree, node *viewmodels.Tree) { //参数为父节点,添加父节点的子节点指针切片
|
|
|
childs, _ := havechild(Data, node) //判断节点是否有子节点并返回
|