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.
@@ -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);
@@ -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
- 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=?
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,id])
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
- result.rows.forEach(element => {
183
- if (element.permissiontype === 1) {////管理权限
184
- retValue.managepermission = element;
185
- } else if (element.permissiontype === 2) {////消费权限
186
- retValue.consumepermission = element;
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
- replace into vmv3_data_permission(
199
- data_type,
308
+ delete from framework_permission where data_id=? and data_type=?;
309
+ insert into framework_permission(
200
310
  data_id,
201
- permission_type,
202
- data_department,
203
- data_department_text,
204
- data_role,
205
- data_role_text,
206
- data_level,
207
- data_level_text,
208
- data_user,
209
- data_user_text
210
- ) values
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
- if (permissionParam.managepermission){
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
- subItem.push(`(
234
- ${this.tableoption.permissiondatatype},
235
- '${id}',
236
- 2,
237
- '${mItem.department || ''}',
238
- '${mItem.departmenttext || ''}',
239
- '${mItem.role || ''}',
240
- '${mItem.roletext || ''}',
241
- '${mItem.level || ''}',
242
- '${mItem.leveltext || ''}',
243
- '${mItem.user || ''}',
244
- '${mItem.usertext || ''}'
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+subItem.join(','));
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) return failed(apiResult.DB_CONNECTED_FAILED);
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 failed(apiResult.DB_CONNECTED_FAILED);
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 failed(apiResult.DB_CONNECTED_FAILED);
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 failed(apiResult.DB_CONNECTED_FAILED);
86
+ return success(apiResult.DB_CONNECTED_FAILED);
71
87
  }
72
88
  logger.trace("SqlCommand:", sqlCommand, "Parameters:", parameters);
73
89
  ////开启事务保护
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doomiwork",
3
- "version": "3.0.0",
3
+ "version": "3.3.0",
4
4
  "description": "doomisoft nodejs web framework",
5
5
  "main": "index.js",
6
6
  "scripts": {