Procházet zdrojové kódy

feat: 资料管理相关

caipin před 1 týdnem
rodič
revize
2393e3bc8e
2 změnil soubory, kde provedl 69 přidání a 4 odebrání
  1. 68 4
      app/controller/weapp_file_controller.js
  2. 1 0
      app/router.js

+ 68 - 4
app/controller/weapp_file_controller.js

@@ -3,6 +3,27 @@
 module.exports = app => {
     class WeappFileController extends app.BaseController {
 
+        async getSubProjectPermission(ctx, spid) {
+            const sessionUser = ctx.session.sessionUser;
+            
+            // 如果是管理员,返回全部权限
+            if (sessionUser.is_admin) {
+                return ctx.service.subProjPermission.adminPermission;
+            }
+            
+            // 否则获取用户在该子项目的权限
+            const permission = await ctx.service.subProjPermission.getSubProjectUserPermission(
+                spid, 
+                sessionUser.accountId
+            );
+            
+            if (!permission) {
+                throw '您无权查看该项目';
+            }
+            
+            return permission;
+        }
+
         /**
          * 获取文件列表页面数据
          *
@@ -23,16 +44,20 @@ module.exports = app => {
                     return;
                 }
 
+                // 获取用户在该子项目的权限信息
+                const permission = await this.getSubProjectPermission(ctx, id);
+
                 // 获取有效的归档分类
-                const filing = await ctx.service.filing.getValidFiling(id, subProject.permission.filing_type);
+                const filing = await ctx.service.filing.getValidFiling(id, permission.filing_type);
+                // const filing = await ctx.service.filing.getValidFiling(id, subProject.permission.filing_type);
 
                 // 获取所有分类数据
                 const categoryData = await ctx.service.category.getAllCategory(subProject);
 
                 // 检查权限
-                const canFiling = subProject.permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.filing.value) >= 0;
-                const canUpload = subProject.permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.upload.value) >= 0;
-                const canEdit = subProject.permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.editfile.value) >= 0;
+                const canFiling = permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.filing.value) >= 0;
+                const canUpload = permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.upload.value) >= 0;
+                const canEdit = permission.file_permission.indexOf(ctx.service.subProjPermission.PermissionConst.file.editfile.value) >= 0;
 
                 // 获取文件引用列表
                 const fileReferenceList = await ctx.service.subProject.getFileReference(subProject, ctx.service.subProject.FileReferenceType.file);
@@ -55,6 +80,45 @@ module.exports = app => {
             }
         }
 
+        /**
+         * 获取第一层级归档分类
+         *
+         * @param {Object} ctx - 上下文对象
+         */
+        async getFirstLevelFiling(ctx) {
+            try {
+                const { id } = ctx.query;
+                if (!id) {
+                    ctx.body = { code: -1, msg: '缺少子项目ID', data: null };
+                    return;
+                }
+
+                // 获取子项目信息
+                const subProject = await ctx.service.subProject.getDataById(id);
+                if (!subProject) {
+                    ctx.body = { code: -1, msg: '子项目不存在', data: null };
+                    return;
+                }
+
+                // 获取有效的归档分类
+                const allFiling = await ctx.service.filing.getValidFiling(id, subProject.permission.filing_type);
+
+                // 过滤出第一层级数据
+                const firstLevelFiling = allFiling.filter(item => item.tree_level === 1);
+
+                ctx.body = {
+                    code: 0,
+                    msg: '获取成功',
+                    data: {
+                        filing: firstLevelFiling,
+                    },
+                };
+            } catch (err) {
+                this.log(err);
+                ctx.body = { code: -1, msg: err.toString(), data: null };
+            }
+        }
+
     }
 
     return WeappFileController;

+ 1 - 0
app/router.js

@@ -1269,4 +1269,5 @@ module.exports = app => {
     app.get('/wx/weapp/tender/:tenderId/material/:mid', weappAuth, weappTenderCheck, 'weappMaterialController.detail');
     app.post('/wx/weapp/tender/:tenderId/material/:mid/audit/check', weappAuth, weappTenderCheck, 'weappMaterialController.checkAudit');
     app.get('/wx/weapp/file/list', weappAuth, 'weappFileController.file');
+    app.get('/wx/weapp/file/firstLevel', weappAuth, 'weappFileController.getFirstLevelFiling');
 };