doomiwork 3.7.11 → 4.0.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.
@@ -1,137 +1,105 @@
1
- const { commonHelper, stringHelper } = require('doomi-helper');
2
- const keyParse = require('./keywordparse');
3
- ///值类型转换
4
- class ViewHelper {
5
- /*
6
- * 将结果集转换为视图需要的结果
7
- */
8
- static transferName2Mapping(originalResult, fieldConfig) {
9
- if (originalResult == null) {
10
- return { successed: true, data: null };
11
- }
12
- if (!fieldConfig || fieldConfig.length == 0) return { successed: true, data: originalResult };//return success({successed:true,data:originalResult});
13
- var retResult = [];
14
- originalResult.forEach(function (row) {
15
- var item = {};
16
- fieldConfig.forEach(function (element) {
17
- ///如果该字段的序列化仅用于向后保存,则序列化到
18
- ///前端页面的时候就不再输出了
19
- if (element.direction == "backonly") return;
20
- let rawValue = row[element.name];
21
- if (!rawValue && element.nullValue) rawValue = element.nullValue;
22
- ///格式化输出
23
- if (element.format) {
24
- if (stringHelper.startWith(element.format, '{') && stringHelper.endsWith(element.format, '}'))
25
- rawValue = stringHelper.format(element.format, rawValue);
26
- else
27
- rawValue = ViewHelper.specialFormatValue(element.format, rawValue);
28
- }
29
- if (!element.mapping)
30
- item[element.name] = rawValue;
31
- else
32
- item[element.mapping] = rawValue;
33
- });
34
- retResult.push(item);
35
- });
36
- return { successed: true, data: retResult };
1
+ const { parseKeyValue, formatValue, validatorParamsType } = require('./keywordparse');
2
+ /**
3
+ * 将结果转化为Mapping对应的键值输出
4
+ * @param {*} originalResult
5
+ * @param {*} fieldConfig
6
+ * @returns transferName2Mapping
7
+ */
8
+ module.exports.Data2View = (originalResult, fieldConfig) => {
9
+ if (!originalResult) return { successed: true, data: null };
10
+ if (!fieldConfig || fieldConfig.length == 0) return { successed: true, data: originalResult };//return success({successed:true,data:originalResult});
37
11
 
12
+ let retResult = [];
13
+ for (const row of originalResult) {
14
+ let item = {};
15
+ for (const element of fieldConfig) {
16
+ ///如果该字段的序列化仅用于向后保存,则序列化到
17
+ ///前端页面的时候就不再输出了
18
+ if (element.direction == "backonly") continue;
19
+ let rawValue = row[element.name];
20
+ if (!rawValue && element.nullValue) rawValue = element.nullValue;
21
+ ///格式化输出
22
+ if (element.format) {
23
+ rawValue = formatValue(rawValue, element.format)
24
+ }
25
+ item[element.mapping || element.name] = rawValue;
26
+ }
27
+ retResult.push(item);
38
28
  }
39
- /*
40
- * 从请求上下文中获取数值,用于新增或修改
41
- */
42
- static transferMapping2Name(req, fieldConfig, doWhat) {
43
- let model = {};
44
- let tmpModel = {};
45
- // var ingoreKey = req.query.ingoreNullKey != null && req.query.ingoreNullKey == 'true';
46
- if (fieldConfig && Array.isArray(fieldConfig)) {
47
- for (const element of fieldConfig){
48
- ///如果该字段的序列化仅用于向前端输出,保存时忽略
49
- if (element.direction == "frontonly") continue;
50
- if (element.action && element.action.indexOf(doWhat) < 0) continue;
51
- let bodyKey = element.mapping || element.name;
52
- let postValue = req.body[bodyKey];
53
- ////body中没有这个属性
54
- //&& element.ignoreundefined == true
55
- if (postValue === undefined ){
56
- if ((doWhat == 'update' && !element.required) ||
57
- (doWhat == 'create' && !element.required && !element.default && !element.nullValue))
58
- continue;
59
- }
60
- ///去除两边的空格,默认是去掉空格
61
- if (typeof (postValue) === 'string'){
62
- if ((element.trim == null || element.trim == true)) postValue.trim();
63
- if (element.maxlength && postValue.length > element.maxlength ){
64
- return { successed: false, errcode: 6, errmsg: '输入的长度超出,最大允许' + element.maxlength, name: element.mapping }
65
- }
66
- }
67
-
68
- //if (commonHelper.isNullOrEmpty(postValue) && ingoreKey) return;
69
- ///如果提交的值为空
70
- if (commonHelper.isNullOrEmpty(postValue)) {
71
- if (element.nullValue)
72
- postValue = keyParse.parseKeyValue(req, element.nullValue);
73
- else
74
- postValue = null;
75
- }
76
- if (!postValue && element.default) postValue = element.default;
77
- ///不允许为空值
78
- if (element.required === true && !postValue) {
79
- return { successed: false, errcode: 5, errmsg: '请填写必填字段内容', name: element.mapping }
80
- }
81
- //空值则不替换或不设置该字段
82
- if (!postValue && element.ignorenull===true){
29
+ return { successed: true, data: retResult };
30
+
31
+ }
32
+ /**
33
+ * 数据准备保存到数据库中,从视图提交的数据中进行转换
34
+ * @param {*} req
35
+ * @param {*} fieldConfig
36
+ * @param {*} doWhat
37
+ * @returns transferMapping2Name
38
+ */
39
+ module.exports.View2Data = (req, fieldConfig, doWhat) => {
40
+ let model = {}, tmpModel = {};
41
+ // var ingoreKey = req.query.ingoreNullKey != null && req.query.ingoreNullKey == 'true';
42
+ if (Array.isArray(fieldConfig)) {
43
+ for (const element of fieldConfig) {
44
+ ///如果该字段的序列化仅用于向前端输出,保存时忽略
45
+ if (element.direction == "frontonly") continue;
46
+ if (element.action && element.action.indexOf(doWhat) < 0) continue;
47
+ let bodyKey = element.mapping || element.name;
48
+ let postValue = req.body[bodyKey];
49
+ ////body中没有这个属性
50
+ //&& element.ignoreundefined == true
51
+ if (postValue === undefined) {
52
+ if ((doWhat == 'update' && !element.required) ||
53
+ (doWhat == 'create' && !element.required && !element.default && !element.nullValue))
83
54
  continue;
55
+ }
56
+ ///去除两边的空格,默认是去掉空格
57
+ if (typeof (postValue) === 'string') {
58
+ if ((!element.trim || element.trim == true)) postValue.trim();
59
+ if (element.maxlength && postValue.length > element.maxlength) {
60
+ return { successed: false, errcode: 6, errmsg: '输入的长度超出,最大允许' + element.maxlength, name: element.mapping }
84
61
  }
85
- //验证值的类型是否正确,主要验证是否数字
86
- if (element.type && postValue){
87
- switch (element.type.toLowerCase()){
88
- case 'number': ///验证是否是数字
89
- if (isNaN(postValue)) return { successed: false, errcode: 4, errmsg: '字段类型错误(Number)', name: element.mapping }
90
- break;
91
- case 'date':
92
- if (!(isNaN(postValue) && !isNaN(Date.parse(postValue)))) return { successed: false, errcode: 4, errmsg: '字段类型错误(Date)', name: element.mapping }
93
- break;
94
- }
95
- }
96
- ///格式化结果
97
- if (postValue && element.format) {
98
- if (stringHelper.startWith(element.format, '{') && stringHelper.endsWith(element.format, '}'))
99
- postValue = stringHelper.format(element.format, postValue);
100
- else {
101
- postValue = ViewHelper.specialFormatValue(element.format, postValue, false);
102
- }
103
- }
104
- ////这个字段是否需要放在其他对象中
105
- if (element.model) {
106
- let modelitem = tmpModel[element.model] || {};
107
- modelitem[element.name] = postValue;
108
- tmpModel[element.model] = modelitem;
109
- }
110
- else
111
- model[element.name] = postValue;
112
62
  }
113
63
 
64
+ ///如果提交的值为空
65
+ if (!postValue) { // if (commonHelper.isNullOrEmpty(postValue)) {
66
+ if (element.nullValue)
67
+ postValue = parseKeyValue(req, element.nullValue);
68
+ else
69
+ postValue = null;
70
+ }
71
+ if (!postValue && element.default) postValue = element.default;
72
+ ///不允许为空值
73
+ if (element.required === true && !postValue) return { successed: false, errcode: 5, errmsg: '请填写必填字段内容', name: bodyKey }
74
+ // //空值则不替换或不设置该字段
75
+ // if (!postValue && element.ignorenull===true){
76
+ // continue;
77
+ // }
78
+ //验证值的类型是否正确,主要验证是否数字
79
+ if (element.type && postValue && !validatorParamsType(postValue, element.type)) {
80
+ return { successed: false, errcode: 4, errmsg: `提交的值与要求的类型不匹配:(${bodyKey},${element.type})`, name: bodyKey }
81
+ }
82
+ ///格式化结果 : 这个可以用,暂时先去掉
83
+ // if (postValue && element.format) {
84
+ // if (stringHelper.startWith(element.format, '{') && stringHelper.endsWith(element.format, '}'))
85
+ // postValue = stringHelper.format(element.format, postValue);
86
+ // else {
87
+ // postValue = ViewHelper.specialFormatValue(element.format, postValue, false);
88
+ // }
89
+ // }
90
+ ////这个字段是否需要放在其他对象中
91
+ if (element.model) {
92
+ let modelitem = tmpModel[element.model] || {};
93
+ modelitem[element.name] = postValue;
94
+ tmpModel[element.model] = modelitem;
95
+ }
96
+ else
97
+ model[element.name] = postValue;
114
98
  }
115
- else
116
- model = req.body;
117
- req.modellist = tmpModel;
118
- return { successed: true, data: model };
119
- }
120
99
 
121
- static specialFormatValue(format, value, toView = true) {
122
- let formatItem = format.split('|');
123
- let coll = {};
124
- let keyIndex = toView ? 0 : 1
125
- formatItem.forEach(item => {
126
- if (item == '') return;
127
- var itemValues = item.split(':');
128
- if (itemValues.length != 2) return;
129
- coll[itemValues[keyIndex]] = itemValues[1 - keyIndex];
130
- })
131
- //let jsonFormat =JSON.parse('{'+format+'}');
132
- return coll[value];
133
100
  }
134
-
135
- }
136
-
137
- exports = module.exports = ViewHelper;
101
+ else
102
+ model = req.body;
103
+ req.modellist = tmpModel;
104
+ return { successed: true, data: model };
105
+ }
@@ -1,14 +0,0 @@
1
- /**
2
- * 默认的拦截,其实不做任何处理,简单的把
3
- * 客户端Header 中的信息设置到Request中
4
- */
5
- class Interceptor{
6
- /**
7
- * 是否允许请求
8
- */
9
- static handleRequest(req,res,next){
10
- req.user = req.headers;
11
- return next();
12
- }
13
- }
14
- exports = module.exports = Interceptor;