Skip to content

Commit 7a88e9d

Browse files
committed
fix(h5test): support batch request to resolve #188
1 parent c121e89 commit 7a88e9d

File tree

5 files changed

+312
-86
lines changed

5 files changed

+312
-86
lines changed

bin/tsw/util/h5-test/add.js

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,31 @@ const OALogin = require('util/oa-login/index.js');
1616
const gzipHttp = require('util/gzipHttp.js');
1717
const canIuse = /^[0-9a-zA-Z_-]{0,64}$/;
1818

19-
module.exports = function(request, response) {
20-
OALogin.checkLoginForTSW(request, response, function() {
19+
module.exports = (request, response) => {
20+
OALogin.checkLoginForTSW(request, response, () => {
2121
module.exports.go(request, response);
2222
});
2323
};
2424

25-
module.exports.go = async function(request, response) {
25+
module.exports.go = async (request) => {
2626

2727
const uin = request.param('uin');
2828
const val = request.param('val');
29+
const map = request.param('uinval');
30+
let data;
2931

30-
const data = await module.exports.addTestUser(uin, val).toES6Promise().catch(function() {
31-
return null;
32-
});
32+
if (map && typeof map === 'object') {
33+
data = await module.exports.addTestUsers(map).toES6Promise().catch(() => null);
34+
} else {
35+
data = await module.exports.addTestUser(uin, val).toES6Promise().catch(() => null);
36+
}
3337

3438
const result = { code: 0, data: data };
3539

3640
returnJson(result);
3741
};
3842

39-
const returnJson = function(json) {
43+
const returnJson = json => {
4044
const gzip = gzipHttp.create({
4145
contentType: 'application/json; charset=UTF-8',
4246
code: 200
@@ -46,11 +50,35 @@ const returnJson = function(json) {
4650
gzip.end();
4751
};
4852

49-
module.exports.addTestUser = function(uin, val) {
50-
logger.debug('addTestUser:' + uin);
51-
val = val || true;
52-
const memcached = isTest.cmem();
53+
/**
54+
* 设置测试环境
55+
* @param uin
56+
* @param val
57+
* @returns {void | * | Promise<any> | Promise<never>}
58+
*/
59+
module.exports.addTestUser = (uin, val) => {
60+
if (!uin) return Deferred.create().reject();
61+
const users = {};
62+
users[uin] = val;
63+
return module.exports.addTestUsers(users);
64+
};
65+
66+
/**
67+
* 批量设置测试环境
68+
* @param map 批量设置列表 key 是 uin,map[key] 是环境
69+
* @returns {void | * | Promise<any> | Promise<never>}
70+
*/
71+
module.exports.addTestUsers = (map) => {
72+
const uins = Object.keys(map);
73+
logger.debug('addTestUsers:' + uins);
5374
const defer = Deferred.create();
75+
76+
const memcached = isTest.cmem();
77+
78+
if (!memcached) {
79+
return defer.reject('memcached not exists');
80+
}
81+
5482
const appid = context.appid || '';
5583
const appkey = context.appkey;
5684
let keyText = isTest.keyBitmap();
@@ -60,24 +88,21 @@ module.exports.addTestUser = function(uin, val) {
6088
keyText = `${keyText}.${appid}`;
6189
}
6290

63-
if (!uin) {
91+
if (!uins.length) {
6492
return defer.reject();
6593
}
6694

67-
if (!canIuse.test(uin)) {
68-
return defer.reject();
69-
}
70-
71-
if (!val) {
72-
return defer.reject();
73-
}
95+
for (let i = 0; i < uins.length; i++) {
96+
if (!canIuse.test(uins[i])) {
97+
return defer.reject();
98+
}
7499

75-
if (!memcached) {
76-
return defer.reject('memcached not exists');
100+
if (!map[uins[i]]) {
101+
return defer.reject();
102+
}
77103
}
78104

79-
80-
memcached.get(keyText, function(err, data) {
105+
memcached.get(keyText, (err, data) => {
81106

82107
if (appid && typeof data === 'string') {
83108
// 解密
@@ -99,25 +124,29 @@ module.exports.addTestUser = function(uin, val) {
99124
text = {};
100125
}
101126

102-
text[uin] = val;
127+
for (let i = 0; i < uins.length; i++) {
128+
const uin = uins[i];
129+
const val = map[uin];
130+
text[uin] = val;
103131

104-
logger.debug(`setKeyText: ${uin}; value: ${val}`);
132+
logger.debug(`setKeyText: ${uin}; value: ${val}`);
133+
}
105134

106135
if (appid) {
107136
// 加密
108137
text = post.encode(appid, appkey, text);
109138
}
110139

111-
memcached.set(keyText, text, expire, function(err, ret) {
140+
memcached.set(keyText, text, expire, (err) => {
112141
if (err) {
113142
defer.reject('memcache set data error');
114143
} else {
115144
logger.debug('setKeyText success');
116145
defer.resolve();
117146
}
118147
});
119-
120148
});
149+
121150
return defer;
122151
};
123152

bin/tsw/util/h5-test/del.js

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,26 @@ const gzipHttp = require('util/gzipHttp.js');
1717
const canIuse = /^[0-9a-zA-Z_-]{0,64}$/;
1818

1919

20-
module.exports = function(request, response) {
21-
OALogin.checkLoginForTSW(request, response, function() {
20+
module.exports = (request, response) => {
21+
OALogin.checkLoginForTSW(request, response, () => {
2222
module.exports.go(request, response);
2323
});
2424
};
2525

26-
module.exports.go = async function(request, response) {
26+
module.exports.go = async request => {
2727

2828
const uin = request.param('uin');
2929

3030
const data = await module.exports.deleteTestUser(
3131
uin
32-
).toES6Promise().catch(function() {
33-
return null;
34-
});
32+
).toES6Promise().catch(() => null);
3533

3634
const result = { code: 0, data: data };
3735

3836
returnJson(result);
3937
};
4038

41-
const returnJson = function(json) {
39+
const returnJson = json => {
4240
const gzip = gzipHttp.create({
4341
contentType: 'application/json; charset=UTF-8',
4442
code: 200
@@ -48,20 +46,25 @@ const returnJson = function(json) {
4846
gzip.end();
4947
};
5048

49+
module.exports.deleteTestUser = uin => {
50+
uin = Array.isArray(uin) ? uin : [uin];
51+
return module.exports.deleteTestUsers([uin]);
52+
};
5153

52-
module.exports.deleteTestUser = function(uin) {
53-
logger.debug('deleteTestUser:' + uin);
54+
/**
55+
* 批量删除测试环境
56+
* @param uins
57+
* @returns {void | * | Promise<any> | Promise<never>}
58+
*/
59+
module.exports.deleteTestUsers = uins => {
60+
logger.debug('deleteTestUser:' + uins);
5461
const memcached = isTest.cmem();
5562
const defer = Deferred.create();
5663
const appid = context.appid || '';
5764
const appkey = context.appkey;
5865
let keyText = isTest.keyBitmap();
5966

60-
if (!uin) {
61-
return defer.reject();
62-
}
63-
64-
if (!canIuse.test(uin)) {
67+
if (!uins || uins.length === 0) {
6568
return defer.reject();
6669
}
6770

@@ -74,7 +77,13 @@ module.exports.deleteTestUser = function(uin) {
7477
return defer.reject('memcached not exists');
7578
}
7679

77-
memcached.get(keyText, function(err, data) {
80+
for (let i = 0; i < uins.length; i++) {
81+
if (!uins[i] || !canIuse.test(uins[i])) {
82+
return defer.reject();
83+
}
84+
}
85+
86+
memcached.get(keyText, (err, data) => {
7887

7988
if (appid && typeof data === 'string') {
8089
// 解密
@@ -96,18 +105,20 @@ module.exports.deleteTestUser = function(uin) {
96105
return defer.resolve();
97106
}
98107

99-
if (text[uin]) {
100-
delete text[uin];
108+
for (let i = 0; i < uins.length; i++) {
109+
const uin = uins[i];
110+
if (text[uin]) {
111+
delete text[uin];
112+
}
113+
logger.debug('deleteKeyText:' + uin);
101114
}
102115

103-
logger.debug('deleteKeyText:' + uin);
104-
105116
if (appid) {
106117
// 加密
107118
text = post.encode(appid, appkey, text);
108119
}
109120

110-
memcached.set(keyText, text, expire, function(err, ret) {
121+
memcached.set(keyText, text, expire, err => {
111122
if (err) {
112123
defer.reject('memcache del data error');
113124
} else {

bin/tsw/util/h5-test/page/src/new.tmpl.html

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,30 @@
5757

5858
return defer;
5959
};
60+
_api.addTestUsers = function(params){
61+
var defer =$.Deferred();
62+
$.ajax({
63+
url: '/api/h5test/add',
64+
type: 'POST',
65+
contentType : "application/json",
66+
dataType : "json",
67+
data: JSON.stringify($.extend({},commomData,{
68+
uinval: params
69+
})),
70+
success: function(data){
71+
if(data && data.code === 0 ) {
72+
defer.resolve(data);
73+
}else {
74+
defer.reject( data && data.msg || "系统繁忙,请稍后再试");
75+
}
76+
},
77+
fail: function(err){
78+
defer.reject( err && err.msg || "系统繁忙,请稍后再试");
79+
}
80+
});
81+
82+
return defer;
83+
};
6084

6185
/*
6286
* 删除白名单
@@ -122,57 +146,35 @@
122146
<script type="text/javascript">
123147
(function() {
124148
var handlerNums = function(val){
125-
return val.split(/(\b[0-9a-zA-Z_\-]{1,64}\b)/g);
126-
}
149+
var arr = [];
150+
val.replace(/(\b[0-9a-zA-Z_\-]{1,64}\b)/g, function(uin){arr.push(uin); return uin;});
151+
return arr;
152+
};
127153
//批量加入
128-
$('#join-submit2').click(function(event){
129-
var deferArr = [];
154+
$('#join-submit2').click(function(e){
130155
var val = $('#join-textarea').val();
131-
// var arr = val.split(/(\b[0-9A-Za-z]+\b)/g);
132156
var arr = handlerNums(val);
157+
var param = {};
133158
var selectVal = $('.selected')[0].value;
134-
for(var i = 1; i < arr.length; i++) {
135-
(function(uin){
136-
var request = api.addTestUser({
137-
uin : uin,
138-
val : selectVal
139-
});
140-
deferArr.push(request);
141-
}(arr[i]));
142-
i++;
159+
for(var i = 0; i < arr.length; i++) {
160+
param[arr[i]] = selectVal;
143161
}
144-
$.when.apply(this, deferArr).done(function(){
162+
api.addTestUsers(param).done(function(){
145163
alert("你的号码,现已加入H5测试环境");
146164
}).fail(function(errMsg){
147-
errMsg = errMsg || "出了点小问题,请联系系统管理员处理";
148-
alert(errMsg);
149-
}).always(function () {
150-
//$('#number-get').trigger('click');
165+
alert(errMsg || "出了点小问题,请联系系统管理员处理");
151166
});
152167
return false;
153168
});
154169
//移除
155-
$('#remove-submit2').click(function(event){
156-
var deferArr = [];
170+
$('#remove-submit2').click(function(e){
157171
var val = $('#join-textarea').val();
158-
var arr = handlerNums(val);
159-
160-
for(var i = 1; i < arr.length; i++) {
161-
162-
var request = api.delTestUser({
163-
uin : arr[i]
164-
});
165-
deferArr.push(request);
166-
167-
i++;
168-
}
169-
$.when.apply(this, deferArr).done(function(){
172+
api.delTestUser({
173+
uin : handlerNums(val)
174+
}).done(function(){
170175
alert("H5测试环境删除成功");
171176
}).fail(function(errMsg){
172-
errMsg = errMsg || "出了点小问题,请联系系统管理员处理";
173-
alert(errMsg);
174-
}).always(function () {
175-
//$('#number-get').trigger('click');
177+
alert(errMsg || "出了点小问题,请联系系统管理员处理");
176178
});
177179
return false;
178180
});

0 commit comments

Comments
 (0)