|
|
@@ -32,7 +32,8 @@ module.exports={
|
|
|
importProject:importProject,
|
|
|
uploadToken:uploadToken,
|
|
|
downLoadProjectFile:downLoadProjectFile,
|
|
|
- importProcessChecking:importProcessChecking
|
|
|
+ importProcessChecking:importProcessChecking,
|
|
|
+ isTenderOverrun
|
|
|
};
|
|
|
|
|
|
|
|
|
@@ -87,6 +88,7 @@ let qiniu = require("qiniu");
|
|
|
let fs = require("fs");
|
|
|
let path = require("path");
|
|
|
let request = require("request");
|
|
|
+const systemSettingMiddleware = require('../../main/middleware/system_setting');
|
|
|
|
|
|
let qiniu_config = {
|
|
|
"AccessKey": "_gR1ed4vi1vT2G2YITGSf4_H0fJu_nRS9Tzk3T4z",
|
|
|
@@ -1218,6 +1220,12 @@ async function importProject(data,req,updateData) {
|
|
|
result.error = 1;
|
|
|
result.msg = `导入失败:您要导入的文件是由“${fileCompilationName}”导出,当前软件是“${curCompilationName}”,请选择正确的编制办法再进行操作!`;
|
|
|
}else {
|
|
|
+ const tenders = mainData.projects.filter(item => item.projType === projectType.tender);
|
|
|
+ const tenderOverrun = await isTenderOverrun(tenders.length, req.session);
|
|
|
+ if (tenderOverrun) {
|
|
|
+ result.error = 1;
|
|
|
+ result.msg = `您创建的项目个数超限,请联系我们的客服人员,或者导出建设项目保存到本地备份,删除云上数据。`;
|
|
|
+ }
|
|
|
let [projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap] = await handleMainProjectDatas(mainData,updateData,req.session.sessionUser.id);
|
|
|
if(datas.length > 1 ){
|
|
|
for(let i = 1;i<datas.length;i++){
|
|
|
@@ -1532,4 +1540,23 @@ function uploadToken() {
|
|
|
domain: qiniu_config.Domain
|
|
|
}
|
|
|
return result
|
|
|
+}
|
|
|
+
|
|
|
+// 有些方法无法通过中间件就检查单位工程数量是否超限
|
|
|
+// 需要到具体的业务代码中进行判断
|
|
|
+// 这个方法就是具体业务代码中,需要检查单位工程数量是否超限用
|
|
|
+async function isTenderOverrun(tenderCount, session) {
|
|
|
+ const userID = session.sessionUser.id;
|
|
|
+ const compilation = session.sessionCompilation._id;
|
|
|
+ const compilationVersion = session.compilationVersion || '免费';
|
|
|
+ let systemSetting = session.systemSetting;
|
|
|
+ // 这种情况只有在刚上线此功能时会出现,不考虑时间差
|
|
|
+ if (!systemSetting) {
|
|
|
+ systemSetting = await systemSettingMiddleware.getSystemSetting();
|
|
|
+ session.systemSetting = systemSetting;
|
|
|
+ }
|
|
|
+ const type = compilationVersion.includes('免费') ? 'normal' : 'professional';
|
|
|
+ const limit = systemSetting[type].project;
|
|
|
+ const curTenderCount = await projectModel.count({userID, compilation, projType: 'Tender', '$or':[{deleteInfo: null}, {'deleteInfo.completeDeleted': false}]});
|
|
|
+ return tenderCount + curTenderCount > limit;
|
|
|
}
|