doomiwork 3.0.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/controller.js +1 -1
- package/core/database/daoBase.js +197 -84
- package/core/database/mysqlbase.js +20 -4
- package/package.json +1 -1
package/core/controller.js
CHANGED
|
@@ -29,7 +29,7 @@ class controller {
|
|
|
29
29
|
this.actionLogger = application.actionLogger;
|
|
30
30
|
///需要数据访问实体的实例
|
|
31
31
|
this._daoModel = dao?dao:new daoBase();
|
|
32
|
-
|
|
32
|
+
this._daoModel.actionLogger = this.actionLogger;
|
|
33
33
|
this._router = express.Router();
|
|
34
34
|
///实现的集成类中只需要去重写此方法
|
|
35
35
|
this.initializeRouter(this);
|
package/core/database/daoBase.js
CHANGED
|
@@ -132,60 +132,118 @@ class mysqlDao extends dao{
|
|
|
132
132
|
if (!this.hasPermissionControl){
|
|
133
133
|
return null;
|
|
134
134
|
}
|
|
135
|
+
// const sqlCommand = `select
|
|
136
|
+
// data_type as datatype,
|
|
137
|
+
// data_id as id,
|
|
138
|
+
// permission_type as permissiontype,
|
|
139
|
+
// data_department as department,
|
|
140
|
+
// data_department_text as departmenttext,
|
|
141
|
+
// data_role as role,
|
|
142
|
+
// data_role_text as roletext,
|
|
143
|
+
// data_level as level,
|
|
144
|
+
// data_level_text as leveltext,
|
|
145
|
+
// data_user as user,
|
|
146
|
+
// data_user_text as usertext
|
|
147
|
+
// from vmv3_data_permission
|
|
148
|
+
// where data_type=?
|
|
149
|
+
// and data_id=?
|
|
150
|
+
// `
|
|
151
|
+
// return this.executeSql(sqlCommand, [this.tableoption.permissiondatatype,id])
|
|
152
|
+
// .then(result=>{
|
|
153
|
+
// let retValue = {
|
|
154
|
+
// successed:true,
|
|
155
|
+
// managepermission: {
|
|
156
|
+
// datatype:this.tableoption.permissiondatatype,
|
|
157
|
+
// id,
|
|
158
|
+
// permissiontype:1,
|
|
159
|
+
// department:'',
|
|
160
|
+
// departmenttext:'',
|
|
161
|
+
// role:'',
|
|
162
|
+
// roletext:'',
|
|
163
|
+
// level:'',
|
|
164
|
+
// leveltext:'',
|
|
165
|
+
// user:'',
|
|
166
|
+
// usertext:''
|
|
167
|
+
// },
|
|
168
|
+
// consumepermission: {
|
|
169
|
+
// datatype: this.tableoption.permissiondatatype,
|
|
170
|
+
// id,
|
|
171
|
+
// permissiontype: 2,
|
|
172
|
+
// department: '',
|
|
173
|
+
// departmenttext: '',
|
|
174
|
+
// role: '',
|
|
175
|
+
// roletext: '',
|
|
176
|
+
// level: '',
|
|
177
|
+
// leveltext: '',
|
|
178
|
+
// user: '',
|
|
179
|
+
// usertext: ''
|
|
180
|
+
// }
|
|
181
|
+
// };
|
|
182
|
+
// result.rows.forEach(element => {
|
|
183
|
+
// if (element.permissiontype === 1) {////管理权限
|
|
184
|
+
// retValue.managepermission = element;
|
|
185
|
+
// } else if (element.permissiontype === 2) {////消费权限
|
|
186
|
+
// retValue.consumepermission = element;
|
|
187
|
+
// }
|
|
188
|
+
// });
|
|
189
|
+
// return retValue;
|
|
190
|
+
// })
|
|
135
191
|
const sqlCommand = `select
|
|
136
|
-
data_type as datatype,
|
|
137
192
|
data_id as id,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
from vmv3_data_permission
|
|
148
|
-
where data_type=?
|
|
149
|
-
and data_id=?
|
|
193
|
+
data_type as datatype,
|
|
194
|
+
allow_type as allowtype,
|
|
195
|
+
allow_id as allowid,
|
|
196
|
+
allow_name as allowname
|
|
197
|
+
from framework_permission
|
|
198
|
+
where
|
|
199
|
+
data_id=?
|
|
200
|
+
and data_type=?
|
|
201
|
+
order by allow_type,allow_id
|
|
150
202
|
`
|
|
151
|
-
return this.executeSql(sqlCommand, [this.tableoption.permissiondatatype
|
|
203
|
+
return this.executeSql(sqlCommand, [id,this.tableoption.permissiondatatype])
|
|
152
204
|
.then(result=>{
|
|
153
205
|
let retValue = {
|
|
154
206
|
successed:true,
|
|
155
|
-
managepermission: {
|
|
156
|
-
datatype:this.tableoption.permissiondatatype,
|
|
157
|
-
id,
|
|
158
|
-
permissiontype:1,
|
|
159
|
-
department:'',
|
|
160
|
-
departmenttext:'',
|
|
161
|
-
role:'',
|
|
162
|
-
roletext:'',
|
|
163
|
-
level:'',
|
|
164
|
-
leveltext:'',
|
|
165
|
-
user:'',
|
|
166
|
-
usertext:''
|
|
167
|
-
},
|
|
207
|
+
managepermission: {},
|
|
168
208
|
consumepermission: {
|
|
169
209
|
datatype: this.tableoption.permissiondatatype,
|
|
170
210
|
id,
|
|
171
211
|
permissiontype: 2,
|
|
172
|
-
department: '',
|
|
173
|
-
departmenttext: '',
|
|
174
|
-
role: '',
|
|
175
|
-
roletext: '',
|
|
176
|
-
level: '',
|
|
177
|
-
leveltext: '',
|
|
178
|
-
user: '',
|
|
179
|
-
usertext: ''
|
|
180
212
|
}
|
|
181
213
|
};
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
214
|
+
let pObject = {deptid:[],depttext:[],roleid:[],roletext:[],userid:[],usernames:[]}
|
|
215
|
+
for (const element of result.rows){
|
|
216
|
+
switch (element.allowtype){
|
|
217
|
+
case 1: ///部门
|
|
218
|
+
pObject.deptid.push(element.allowid)
|
|
219
|
+
if (pObject.deptid.length < 4) {
|
|
220
|
+
pObject.depttext.push(element.allowname)
|
|
221
|
+
}
|
|
222
|
+
break;
|
|
223
|
+
case 2: ///角色
|
|
224
|
+
pObject.roleid.push(element.allowid)
|
|
225
|
+
if (pObject.roleid.length < 4) {
|
|
226
|
+
pObject.roletext.push(element.allowname)
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
229
|
+
case 3: ///用户
|
|
230
|
+
pObject.userid.push(element.allowid)
|
|
231
|
+
if (pObject.userid.length < 4) {
|
|
232
|
+
pObject.usernames.push(element.allowname)
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
187
235
|
}
|
|
188
|
-
}
|
|
236
|
+
}
|
|
237
|
+
retValue.consumepermission.department = pObject.deptid.join(',')
|
|
238
|
+
retValue.consumepermission.departmenttext = pObject.depttext.join(',') ;//+ ((pObject.deptid.length > pObject.depttext.length) ? `等${pObject.deptid.length}个部门`:'');
|
|
239
|
+
|
|
240
|
+
retValue.consumepermission.role = pObject.roleid.join(',')
|
|
241
|
+
retValue.consumepermission.roletext = pObject.roletext.join(',');// + ((pObject.roleid.length > pObject.roletext.length) ? `等${pObject.roleid.length}个角色` : '');
|
|
242
|
+
|
|
243
|
+
retValue.consumepermission.user = pObject.userid.join(',')
|
|
244
|
+
retValue.consumepermission.usertext = pObject.usernames.join(',');// + ((pObject.userid.length > pObject.usernames.length) ? `等${pObject.userid.length}个用户` : '');
|
|
245
|
+
|
|
246
|
+
console.log('retValue==>', retValue)
|
|
189
247
|
return retValue;
|
|
190
248
|
})
|
|
191
249
|
}
|
|
@@ -194,57 +252,112 @@ class mysqlDao extends dao{
|
|
|
194
252
|
if (!this.hasPermissionControl || !permissionParam) {
|
|
195
253
|
return Promise.resolve({successed:true})
|
|
196
254
|
};
|
|
255
|
+
// const sqlCommand = `
|
|
256
|
+
// replace into vmv3_data_permission(
|
|
257
|
+
// data_type,
|
|
258
|
+
// data_id,
|
|
259
|
+
// permission_type,
|
|
260
|
+
// data_department,
|
|
261
|
+
// data_department_text,
|
|
262
|
+
// data_role,
|
|
263
|
+
// data_role_text,
|
|
264
|
+
// data_level,
|
|
265
|
+
// data_level_text,
|
|
266
|
+
// data_user,
|
|
267
|
+
// data_user_text
|
|
268
|
+
// ) values
|
|
269
|
+
// `
|
|
270
|
+
// let subItem = [];
|
|
271
|
+
// if (permissionParam.managepermission){
|
|
272
|
+
// const mItem = permissionParam.managepermission;
|
|
273
|
+
// subItem.push(`(
|
|
274
|
+
// ${this.tableoption.permissiondatatype},
|
|
275
|
+
// '${id}',
|
|
276
|
+
// 1,
|
|
277
|
+
// '${mItem.department || ''}',
|
|
278
|
+
// '${mItem.departmenttext || ''}',
|
|
279
|
+
// '${mItem.role || ''}',
|
|
280
|
+
// '${mItem.roletext || ''}',
|
|
281
|
+
// '${mItem.level || ''}',
|
|
282
|
+
// '${mItem.leveltext || ''}',
|
|
283
|
+
// '${mItem.user || ''}',
|
|
284
|
+
// '${mItem.usertext || ''}'
|
|
285
|
+
// )`)
|
|
286
|
+
|
|
287
|
+
// }
|
|
288
|
+
|
|
289
|
+
// if (permissionParam.consumepermission) {
|
|
290
|
+
// const mItem = permissionParam.consumepermission;
|
|
291
|
+
// subItem.push(`(
|
|
292
|
+
// ${this.tableoption.permissiondatatype},
|
|
293
|
+
// '${id}',
|
|
294
|
+
// 2,
|
|
295
|
+
// '${mItem.department || ''}',
|
|
296
|
+
// '${mItem.departmenttext || ''}',
|
|
297
|
+
// '${mItem.role || ''}',
|
|
298
|
+
// '${mItem.roletext || ''}',
|
|
299
|
+
// '${mItem.level || ''}',
|
|
300
|
+
// '${mItem.leveltext || ''}',
|
|
301
|
+
// '${mItem.user || ''}',
|
|
302
|
+
// '${mItem.usertext || ''}'
|
|
303
|
+
// )`)
|
|
304
|
+
// }
|
|
305
|
+
//return this.executeSql(sqlCommand+subItem.join(','));
|
|
306
|
+
|
|
197
307
|
const sqlCommand = `
|
|
198
|
-
|
|
199
|
-
|
|
308
|
+
delete from framework_permission where data_id=? and data_type=?;
|
|
309
|
+
insert into framework_permission(
|
|
200
310
|
data_id,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
311
|
+
data_type,
|
|
312
|
+
allow_type,
|
|
313
|
+
allow_id
|
|
314
|
+
) values ?;
|
|
315
|
+
|
|
316
|
+
update framework_permission op
|
|
317
|
+
inner join vm_org_department od on op.allow_id=od.department_id
|
|
318
|
+
set op.allow_name = od.department_name,
|
|
319
|
+
op.allow_path = od.parent_path
|
|
320
|
+
where data_id=? and data_type=? and allow_type=1;
|
|
321
|
+
|
|
322
|
+
update framework_permission op
|
|
323
|
+
inner join vm_org_role od on op.allow_id=od.role_id
|
|
324
|
+
set op.allow_name = od.role_name
|
|
325
|
+
where data_id=? and data_type=? and allow_type=2;
|
|
326
|
+
|
|
327
|
+
update framework_permission op
|
|
328
|
+
inner join vm_org_user od on op.allow_id=od.user_id
|
|
329
|
+
set op.allow_name = od.user_name
|
|
330
|
+
where data_id=? and data_type=? and allow_type=3;
|
|
331
|
+
|
|
211
332
|
`
|
|
212
333
|
let subItem = [];
|
|
213
|
-
|
|
214
|
-
const mItem = permissionParam.managepermission;
|
|
215
|
-
subItem.push(`(
|
|
216
|
-
${this.tableoption.permissiondatatype},
|
|
217
|
-
'${id}',
|
|
218
|
-
1,
|
|
219
|
-
'${mItem.department || ''}',
|
|
220
|
-
'${mItem.departmenttext || ''}',
|
|
221
|
-
'${mItem.role || ''}',
|
|
222
|
-
'${mItem.roletext || ''}',
|
|
223
|
-
'${mItem.level || ''}',
|
|
224
|
-
'${mItem.leveltext || ''}',
|
|
225
|
-
'${mItem.user || ''}',
|
|
226
|
-
'${mItem.usertext || ''}'
|
|
227
|
-
)`)
|
|
228
|
-
|
|
229
|
-
}
|
|
334
|
+
|
|
230
335
|
|
|
231
336
|
if (permissionParam.consumepermission) {
|
|
232
337
|
const mItem = permissionParam.consumepermission;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
)`)
|
|
338
|
+
const deptids = mItem.department?mItem.department.split(','):[]
|
|
339
|
+
for (const deptid of deptids){
|
|
340
|
+
subItem.push([id, this.tableoption.permissiondatatype, 1, deptid])
|
|
341
|
+
}
|
|
342
|
+
const roleids = mItem.role ? mItem.role.split(',') : []
|
|
343
|
+
for (const rid of roleids) {
|
|
344
|
+
subItem.push([id, this.tableoption.permissiondatatype, 2, rid])
|
|
345
|
+
}
|
|
346
|
+
const userids = mItem.user ? mItem.user.split(',') : []
|
|
347
|
+
for (const uid of userids) {
|
|
348
|
+
subItem.push([id, this.tableoption.permissiondatatype, 3, uid])
|
|
349
|
+
}
|
|
246
350
|
}
|
|
247
|
-
return this.executeSql(sqlCommand
|
|
351
|
+
return this.executeSql(sqlCommand, [
|
|
352
|
+
id,
|
|
353
|
+
this.tableoption.permissiondatatype,
|
|
354
|
+
subItem,
|
|
355
|
+
id,
|
|
356
|
+
this.tableoption.permissiondatatype,
|
|
357
|
+
id,
|
|
358
|
+
this.tableoption.permissiondatatype,
|
|
359
|
+
id,
|
|
360
|
+
this.tableoption.permissiondatatype]);
|
|
248
361
|
}
|
|
249
362
|
/**
|
|
250
363
|
*
|
|
@@ -24,6 +24,18 @@ class Database {
|
|
|
24
24
|
escape(value){
|
|
25
25
|
return mysql.escape(value);
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* 记录错误日志
|
|
29
|
+
*/
|
|
30
|
+
logError(scene,error,user=null){
|
|
31
|
+
///不需要记录错误日志
|
|
32
|
+
if (this.ingoreErrorLog === true || !this.actionLogger || typeof (this.actionLogger.logError)!=='function'){
|
|
33
|
+
return ;
|
|
34
|
+
}
|
|
35
|
+
///如果没有传场景,则记录数据库的业务值
|
|
36
|
+
if (!scene) scene = this.constructor.name;
|
|
37
|
+
this.actionLogger.logError({ scene, error, user})
|
|
38
|
+
}
|
|
27
39
|
/**
|
|
28
40
|
* 不事务执行SQL命令
|
|
29
41
|
* @param {*} sqlCommand
|
|
@@ -31,13 +43,16 @@ class Database {
|
|
|
31
43
|
*/
|
|
32
44
|
executeSql(sqlCommand, parameters) {
|
|
33
45
|
let logger = this.logger;
|
|
46
|
+
let that = this;
|
|
34
47
|
return new Promise((success, failed) => {
|
|
35
|
-
if (!this.pool)
|
|
48
|
+
if (!this.pool) {
|
|
49
|
+
return success(apiResult.DB_CONNECTED_FAILED);
|
|
50
|
+
}
|
|
36
51
|
///创建出数据库连接,准备执行
|
|
37
52
|
this.pool.getConnection(function (err, connection) {
|
|
38
53
|
if (err) {
|
|
39
54
|
logger.error("Database Connected Failed :"+ err);
|
|
40
|
-
return
|
|
55
|
+
return success(apiResult.DB_CONNECTED_FAILED);
|
|
41
56
|
}
|
|
42
57
|
else {
|
|
43
58
|
logger.trace("SqlCommand:", sqlCommand, "Parameters:", parameters);
|
|
@@ -45,6 +60,7 @@ class Database {
|
|
|
45
60
|
connection.release();
|
|
46
61
|
if (err) {
|
|
47
62
|
logger.error("Database Query Error :" + err, sqlCommand);
|
|
63
|
+
that.logError(null, '数据库操作错误:' + err + sqlCommand)
|
|
48
64
|
return success(Object.assign(apiResult.DB_EXECUTE_FAILED, { errmessage: err.message }));
|
|
49
65
|
}
|
|
50
66
|
return success({ successed: true, rows: rows });//,fields:fields});
|
|
@@ -62,12 +78,12 @@ class Database {
|
|
|
62
78
|
executeSqlWithTransaction(sqlCommand, parameters) {
|
|
63
79
|
let logger = this.logger;
|
|
64
80
|
return new Promise((success, failed) => {
|
|
65
|
-
if (!this.pool) return
|
|
81
|
+
if (!this.pool) return success(apiResult.DB_CONNECTED_FAILED);
|
|
66
82
|
///创建出数据库连接,准备执行
|
|
67
83
|
this.pool.getConnection(function (err, connection) {
|
|
68
84
|
if (err) {
|
|
69
85
|
logger.error("Database Connected Failed :"+ err);
|
|
70
|
-
return
|
|
86
|
+
return success(apiResult.DB_CONNECTED_FAILED);
|
|
71
87
|
}
|
|
72
88
|
logger.trace("SqlCommand:", sqlCommand, "Parameters:", parameters);
|
|
73
89
|
////开启事务保护
|