Church's Coupon Performance Test Script

    2015年6月针对church's coupon app做了并发压力测试,HP LR在11.5版本第一次支持在移动设备的录制对Server压力测试。也是本人第一次在移动设备上压力测试实践。工具使用的是 HP LoadRunner 12.02 Community Edition。(社区版可以免费支持50个虚拟用户并发,此版本工具当时是最新版,尚没有任何破解的license)

LoadRunner在11.5版本开始,可以支持mobile proxy,其录制脚本的方法也有很多种可以根据不同的OS如:Android、IOS来选择最适合的录制方式(稍后整理)

录制完成的脚本后缀名为.usr 需要安装loadRunner后用VGen打开(如图:脚本名称为chcp0625.usr)在此将脚本贴出来以便日后优化或借鉴。


LR打开后界面如下:


测试主要并发的业务有:

  1. Register page----->register user(Name,email,zip code)
  2. My church’s page---->update user information
  3. Promotion request
  4. Change zip code---->get coupon
  5. Use coupen
  6. Feedback
  7. Feedback  reward
  8. Change zipcode
  9. Location and find store
  10. Change_lanuage

其中有三个重点难点

一:Promotion

点击Promotion后向服务器发送的请求录制不到,所以需要手动编写这一步的脚本请求:尤其是reques中Body发送的json格式的数据,格式如下:

"Body={ \"randomSeeds\":\"{randomSeedString}\",\"profileData\":\"{b64str}\",\"clientId\":\"helloword_promotion_site\",\"signature\":\"{signatureString}\"}"

首先需要解决以下参数(大括号中表示要传的参数值):

randomSeeds: 是 new Date().getTime();
profileData: 是 BASE64加密("{"profileId":{pId}, "email":"{email}"}")
signature: 是 randomSeeds{ {clientId}:example_password}, 在MD5加密

clientId就是固定的字符串helloword_promotion_site。

二:FeedBack Reward

FeedBack Reward这一步用户会填一份调查问卷,录制提交题目的内容一开始找不到,以为也是没有录制上,所以花了大量的时间浪费在提交内容的json上。

后来才发现其实录制在了外部的.h(lrw_custom_body.h)文件中然后作为     body_variable_1,  这货引入的    - -| 所以这算是个前车之鉴,录制完的脚本首先要沉下心来好好研究透彻才不至于后面走弯路。

三:SSL

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。提供服务:

1)认证用户和服务器,确保数据发送到正确的 客户机服务器
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
所以在并发测试时候,要求导入SSL证书。

现在把脚本贴上。

首先,先看看脚本的目录:


1.所有的动作录制的脚本一般默认在在Action文件中,录制完毕后二次编写开发脚本也在此处。完整script如下:(vuser_init和vuer_end正如其名是用来初始化和结束的脚本,在此没有实质的内容可以忽略)

#include "md5.h"
#include "base64.h"
Action()
{
/*randomSeeds  is new Date().getTime();
profileData is after BASE64 string like this("{"profileId":{pId}, "email":"{email}"}")
signature is randomSeeds{
 {clientId}:example_password}, 在MD5加密
@author:annie
*/


 char profileData[1024];
 char dest[512];  //md5
 char s[512]; //base 64
 int res;
 long long currentTime = time();  //currentime
 char testurl[100]="http://churchsgs-temp.technologystudios.com";//replace which  server url your want to test
 char testokenurl[100]="https://churchspromo.nextxnow.com";
  lr_save_string(testurl,"testurlString"); 
  lr_save_string(testokenurl,"testokenurlString"); 

 lr_save_timestamp("randomSeedString", LAST );
   
 //profileDataString is the string before base64 ,
  sprintf(profileData,"{\"profileId\":\"%s\", \"email\":\"%s\"}",lr_eval_string("{pid}"),lr_eval_string("{email}"));
 lr_save_string(profileData,"profileDataString");
 
//md5 #include "md5.h"; signatureString is the string [ randomSeeds{
 {clientId}:example_password}] convert to MD5
  memset(dest,sizeof(char)*512);
  memset(s,sizeof(char)*512);
  GetMd5FromString(s,dest);
  lr_save_string(dest,"signatureString");
     
//base 64  
  b64_encode_string( lr_eval_string("{profileDataString}"), "b64str" );
  lr_output_message("Encoded: %s", lr_eval_string("{b64str}") );

  lr_log_message("************** Start Testing Params*******");
  lr_log_message("randomSeeds[currentTime]:%ld",currentTime);
  lr_log_message("randomSeeds[lr_save_timestamp]:%ld",lr_eval_string("{randomSeedString}"));
  lr_log_message("profileData:%s",profileData);
  lr_log_message("*s:%ls",s);
  lr_log_message("md5[s,signatureString]:%s,%s", s,dest);
  lr_log_message("************** End Testing Params*********");
 
	//1.Register page----->register user(Name,email,zip code)
//	lr_rendezvous("register_rendezvous");
    lr_start_transaction("register user");
	web_custom_request("register",
		"URL={testurlString}/mobile/profile/register", 
		"Method=PUT", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t4.inf", 
		"Mode=HTML", 
		"Body={\"zip\":\"{zip_code}\",\"activityUpdateDate\":null,\"age\":null,\"appId\":\"churchsce_android\",\"appVersion\":\"1.3.5\",\"createDate\":\"2015-06-12T10:19:03+0800\",\"dayPart\":\"\",\"deviceSystem\":\"Android\",\"deviceType\":\"Meizu M353\",\"dob\":\"1970-06-16T00:00:00+0800\",\"email\":\"{email}\",\"favorites\":\"\",\"firstName\":\"\",\"gender\":null,\"languageCode\":\"en\",\"lastActivity\":null,\"lastLoginTime\":\"2015-06-16T09:50:24+0800\",\"lastName\":null,\"location\":null,\"password\":\"\",\"phone\":\""
		"\",\"profileId\":\"{pid}\",\"registerDate\":\"2015-06-15T20:30:49+0800\",\"userProfileExts\":[{\"profileId\":\"" 
		"{pid}\",\"paramId\":\"UP000001\",\"paramName\":\"visit_freq\",\"paramValue\":\"\",\"enabled\":true},{\"profileId\":\"" 
		"{pid}\",\"paramId\":\"UP000002\",\"paramName\":\"my_churchs\",\"paramValue\":\"\",\"enabled\":true},{\"profileId\":\"{pid}\",\"paramId\":\"UP000003\",\"paramName\":\""
		"subscribe_email\",\"paramValue\":\"1\",\"enabled\":true}],\"userDevice\":{\"appId\":\"churchsce_android\",\"appVersion\":\"1.3.5\",\"systemVersion\":\"4.4.4\",\"carrierName\":\"\",\"country\":\"en\",\"deviceName\":\"Meizu M353\",\"language\":\"en\",\"mcc\":\"\",\"mnc\":\"\",\"model\":\"M353\",\"network\":\"WIFI\",\"profileId\":\"{pid}\",\"systemName\":\"Android\",\"appVersionNumber\":27},\"lng\":0.0,\"lat\":0.0,\"active\":true}", 
		LAST);
	    lr_end_transaction("register user", LR_PASS);
	
   // 2.my church’s page---->update user information
  // lr_rendezvous("updateUserInformationr_rendezvous");
	lr_start_transaction("update user information");
	web_custom_request("update",
		"URL={testurlString}/mobile/profile/update", 
		"Method=PUT", 
		"Resource=0", 
		"RecContentType=application/json", 
		"EncType=application/json;charset=UTF-8", 
		"Referer=", 
		"Snapshot=t1.inf", 
		"Mode=HTML", 
		"Body={\"zip\":\"{zip_code}\",\"activityUpdateDate\":null,\"age\":null,\"appId\":\"churchsce_android\",\"appVersion\":\"1.3.5\",\"createDate\":\"2015-06-12T10:19:03+0800\",\"dayPart\":\"\",\"deviceSystem\":\"Android\",\"deviceType\":\"Meizu M353\",\"dob\":\"1970-06-17T00:00:00+0800\",\"email\":\"{email}\",\"favorites\":\"\",\"firstName\":\"AnnieupdateInfo\",\"gender\":null,\"languageCode\":\"en\",\"lastActivity\":null,\"lastLoginTime\":\"2015-06-17T19:20:56+0800\",\"lastName\":null,\"location\""
		":null,\"password\":\"\",\"phone\":\"18588528872\",\"profileId\":\"{pid}\",\"registerDate\":\"2015-06-15T20:30:49+0800\",\"userProfileExts\":[{\"profileId\":\"{pid}\",\"paramId\":\"UP000001\",\"paramName\":\"visit_freq\",\"paramValue\":\"\",\"enabled\":true},{\"profileId\":\"{pid}\",\"paramId\":\"UP000002\",\"paramName\":\"my_churchs\",\"paramValue\":\"\",\"enabled\":true},{\"profileId\":\""
		"{pid}\",\"paramId\":\"UP000003\",\"paramName\":\"subscribe_email\",\"paramValue\":\"1\",\"enabled\":true}],\"userDevice\":{\"appId\":\"churchsce_android\",\"appVersion\":\"1.3.5\",\"systemVersion\":\"4.4.4\",\"carrierName\":\"\",\"country\":\"en\",\"deviceName\":\"Meizu M353\",\"language\":\"en\",\"mcc\":\"\",\"mnc\":\"\",\"model\":\"M353\",\"network\":\"WIFI\",\"profileId\":\"{pid}\",\"systemName\":\"Android\",\"appVersionNumber\":27},\"lng\""
		":0.0,\"lat\":0.0,\"active\":true}", 
		LAST);
		lr_end_transaction("update user information",LR_PASS);
   
   // promotion request 
   //   lr_rendezvous("promotion_rendezvous");
   lr_start_transaction("obtainAccessToken_1");
	web_custom_request("obtainAccessToken_1", 
		"URL={testokenurlString}/obtainAccessToken", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t3.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"randomSeeds\":\"{randomSeedString}\",\"profileData\":\"{b64str}\",\"clientId\":\"helloword_promotion_site\",\"signature\":\"{signatureString}\"}", 
		LAST);
    lr_end_transaction("obtainAccessToken_1",LR_PASS);
   

//① Change zip code---->get coupon
//    lr_rendezvous("getCoupon_rendezvous");
    lr_start_transaction("getCouponsWithZipcodeGroup");
    web_custom_request("getCouponsWithZipcodeGroup", 
		"URL={testurlString}/mobile/coupon/getCouponsWithZipcodeGroup", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t3.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		
		"Body={\"requestZipcode\":\"\",\"userZipcode\":\"{zip_code}\",\"udts\":0,\"profileId\":\"{pid}\"}", 
		LAST);
    lr_end_transaction("getCouponsWithZipcodeGroup", LR_AUTO);


//use coupen
//   lr_rendezvous("useCoupon_rendezvous");
   lr_start_transaction("use_coupon");
   web_custom_request("syncCommit", 
		"URL={testurlString}/mobile/sync/syncCommit", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t6.inf", 
		"ContentEncoding=gzip", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body=[{\"createDate\":\"2015-06-18T20:19:31+0800\",\"data\":\"{\\\"accountNo\\\":null,\\\"active\\\":true,\\\"applicableArea\\\":\\\"National\\\",\\\"category\\\":null,\\\"complaintId\\\":null,\\\"couponCode\\\":\\\"test02\\\",\\\"couponId\\\":\\\"CP82HH65NYELTRXJ\\\",\\\"createDate\\\":\\\"2015-06-18T11:28:09+0800\\\",\\\"dataType\\\":\\\"Coupon\\\",\\\"desc1\\\":null,\\\"desc2\\\":null,\\\"desc3\\\":null,\\\"discountType\\\":null,\\\"effectiveDate\\\":\\\"2015-06-17T15:00:00+0800\\\",\\\""
		"expireDate\\\":\\\"2015-06-29T14:59:59+0800\\\",\\\"imageUrl\\\":\\\"LCP1434598089855EEDC.png\\\",\\\"interactiveData\\\":null,\\\"lat\\\":1000.0,\\\"libCouponId\\\":\\\"LCP1434598089855EEDC\\\",\\\"lng\\\":1000.0,\\\"performId\\\":{performid},\\\"productId\\\":null,\\\"productName\\\":null,\\\"pushDate\\\":\\\"2015-06-18T15:54:05+0800\\\",\\\"savings\\\":0.0,\\\"scope\\\":\\\"Zip\\\",\\\"scopeValue\\\":\\\"75837\\\",\\\"starQuantity\\\":0,\\\"udts\\\":16389291,\\\"used\\\":true,\\\"usedDate\\\":\\\""
		"2015-06-18T20:19:31+0800\\\",\\\"usedPlace\\\":null}\",\"dataId\":\"CP82HH65NYELTRXJ\",\"format\":\"json\",\"imgData\":null,\"status\":\"uploading\",\"syncid\":\"{syncid}\",\"type\":\"coupon\",\"uploadDate\":\"2015-06-18T20:19:31+0800\"}]", 
		EXTRARES, 
		"Url=../coupon/getimage/en/LCP1434598089855EEDC", "Referer=", ENDITEM, 
		"Url=../reward/get/{pid}", "Referer=", ENDITEM, 
		LAST);
		lr_end_transaction("use_coupon", LR_AUTO);
//feedback
// lr_rendezvous("feedback_rendezvous");
lr_start_transaction("feedback");
web_custom_request("syncCommit", 
		"URL={testurlString}/mobile/sync/syncCommit", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t4.inf", 
		"ContentEncoding=gzip", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body=[{\"createDate\":\"2015-06-17T19:22:58+0800\",\"data\":\"{\\\"zip\\\":\\\"{zip_code}\\\",\\\"activityUpdateDate\\\":null,\\\"age\\\":null,\\\"appId\\\":\\\"churchsce_android\\\",\\\"appVersion\\\":\\\"1.3.5\\\",\\\"createDate\\\":\\\"2015-06-12T10:19:03+0800\\\",\\\"dayPart\\\":\\\"Breakfast\\\",\\\"deviceSystem\\\":\\\"Android\\\",\\\"deviceType\\\":\\\"Meizu M353\\\",\\\"dob\\\":\\\"1970-06-17T00:00:00+0800\\\",\\\"email\\\":\\\"{email}\\\",\\\"favorites\\\":\\\"World Famous "
		"Chicken, Sandwiches, New Menu Items/Promotions, Family/Child Focused\\\",\\\"firstName\\\":\\\"AnnieTest\\\",\\\"gender\\\":null,\\\"languageCode\\\":\\\"en\\\",\\\"lastActivity\\\":null,\\\"lastLoginTime\\\":\\\"2015-06-17T19:20:56+0800\\\",\\\"lastName\\\":null,\\\"location\\\":null,\\\"password\\\":\\\"\\\",\\\"phone\\\":\\\"18588528872\\\",\\\"profileId\\\":\\\"{pid}\\\",\\\"registerDate\\\":\\\"2015-06-15T20:30:49+0800\\\",\\\"userProfileExts\\\":[{\\\"profileId\\\""
		":\\\"{pid}\\\",\\\"paramId\\\":\\\"UP000001\\\",\\\"paramName\\\":\\\"visit_freq\\\",\\\"paramValue\\\":\\\"About every other month\\\",\\\"enabled\\\":true},{\\\"profileId\\\":\\\"{pid}\\\",\\\"paramId\\\":\\\"UP000002\\\",\\\"paramName\\\":\\\"my_churchs\\\",\\\"paramValue\\\":\\\"\\\",\\\"enabled\\\":true},{\\\"profileId\\\":\\\"{pid}\\\",\\\"paramId\\\":\\\"UP000003\\\",\\\"paramName\\\":\\\"subscribe_email\\\","
		"\\\"paramValue\\\":\\\"1\\\",\\\"enabled\\\":true}],\\\"userDevice\\\":{\\\"appId\\\":\\\"churchsce_android\\\",\\\"appVersion\\\":\\\"1.3.5\\\",\\\"systemVersion\\\":\\\"4.4.4\\\",\\\"carrierName\\\":\\\"\\\",\\\"country\\\":\\\"en\\\",\\\"deviceName\\\":\\\"Meizu M353\\\",\\\"language\\\":\\\"en\\\",\\\"mcc\\\":\\\"\\\",\\\"mnc\\\":\\\"\\\",\\\"model\\\":\\\"M353\\\",\\\"network\\\":\\\"WIFI\\\",\\\"profileId\\\":\\\"{pid}\\\",\\\"systemName\\\":\\\"Android\\\",\\\""
		"appVersionNumber\\\":27},\\\"lng\\\":0.0,\\\"lat\\\":0.0,\\\"active\\\":true}\",\"dataId\":\"{pid}\",\"format\":\"json\",\"imgData\":null,\"status\":\"uploading\",\"{syncid}\":\"SD1434540178147PEQE\",\"type\":\"profile\",\"uploadDate\":\"2015-06-17T19:22:58+0800\"}]", 
		EXTRARES, 
		"Url=../reward/get/{pid}", "Referer=", ENDITEM, 
		LAST);

	web_custom_request("getCouponsWithZipcodeGroup_2", 
		"URL={testurlString}/mobile/coupon/getCouponsWithZipcodeGroup", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t5.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"requestZipcode\":\"{zip_code}\",\"userZipcode\":\"{zip_code}\",\"udts\":0,\"profileId\":\"{pid}\"}", 
		LAST);
  lr_end_transaction("feedback", LR_AUTO);
		
//feedback  reward
//lr_rendezvous("feedbackReward_rendezvous");
  lr_start_transaction("feedbackReward");
  web_custom_request("searchAlignByKeywordAndCurrentLatlng", 
		"URL={testurlString}/mobile/geoalign/searchAlignByKeywordAndCurrentLatlng", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t11.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"limit\":20,\"currentLat\":-1000.0,\"start\":0,\"keyword\":\"{zip_code}\",\"currentLng\":-1000.0}", 
           	LAST);

	web_custom_request("syncCommit_experience", 
		"URL={testurlString}/mobile/sync/syncCommit", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t12.inf", 
		"ContentEncoding=gzip", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
	
		body_variable_1, 
		
		EXTRARES, 
		"Url=../reward/get/{pid}", "Referer=", ENDITEM, 
		LAST);
  
  
  lr_end_transaction("feedbackReward", LR_AUTO);


  
		
// change zipcode
 // lr_rendezvous("changezipcode_rendezvous");
   lr_start_transaction("changezipcode");
   web_custom_request("getCouponsWithZipcodeGroup_7",
		"URL={testurlString}/mobile/coupon/getCouponsWithZipcodeGroup", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t13.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"requestZipcode\":\"{zip_code}\",\"userZipcode\":\"{zip_code}\",\"udts\":0,\"profileId\":\"{pid}\"}", 
		LAST);
lr_end_transaction("changezipcode", LR_AUTO);

		
//location and find store
//lr_rendezvous("locationAndFindStore_rendezvous");
lr_start_transaction("location and find store");

	web_custom_request("searchAlignByKeywordAndCurrentLatlng_2", 
		"URL={testurlString}/mobile/geoalign/searchAlignByKeywordAndCurrentLatlng", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t14.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"limit\":20,\"currentLat\":-1000.0,\"start\":0,\"keyword\":\"44444\",\"currentLng\":-1000.0}", 
		LAST);
		lr_end_transaction("location and find store", LR_AUTO);

//change_lanuage
//lr_rendezvous("changeLanuage_rendezvous");
lr_start_transaction("change_lanuage");

web_custom_request("getCouponsWithZipcodeGroup_8", 
		"URL={testurlString}/mobile/coupon/getCouponsWithZipcodeGroup", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t17.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"requestZipcode\":\"{zip_code}\",\"userZipcode\":\"{zip_code}\",\"udts\":0,\"profileId\":\"{pid}\"}", 
		LAST); 

	web_custom_request("es", 
		"URL={testurlString}/mobile/profile/update/{pid}/es", 
		"Method=PUT", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t19.inf", 
		"Mode=HTML", 
		"Body={\"languageCode\":\"es\",\"profileId\":\"{pid}\"}", 
		LAST);

	web_custom_request("getCouponsWithZipcodeGroup_10", 
		"URL={testurlString}/mobile/coupon/getCouponsWithZipcodeGroup", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t20.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"requestZipcode\":\"{zip_code}\",\"userZipcode\":\"{zip_code}\",\"udts\":0,\"profileId\":\"{pid}\"}", 
		LAST);

	web_custom_request("en", 
		"URL={testurlString}/mobile/profile/update/{pid}/en", 
		"Method=PUT", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t21.inf", 
		"Mode=HTML", 
		"Body={\"languageCode\":\"en\",\"profileId\":\"{pid}\"}", 
		LAST);
	lr_end_transaction("change_lanuage", LR_AUTO);


	return 0;
}

 

2.Extra Files里是上面提到的"外部文件",在此可以编写自己的函数作为头文件,然后引入Action中(所有均是c语言)

比如MD5和base64的方法就是在写此处然后引入的。

md5.h

#ifndef MD5_H
#define MD5_H
#ifdef __alpha
typedef unsigned int uint32;
#else
typedef unsigned long uint32;
#endif
struct MD5Context {
 uint32 buf[4];
 uint32 bits[2];
 unsigned char in[64];
};
extern void MD5Init();
extern void MD5Update();
extern void MD5Final();
extern void MD5Transform();
typedef struct MD5Context MD5_CTX;
#endif
#ifdef sgi
#define HIGHFIRST
#endif
#ifdef sun
#define HIGHFIRST
#endif
#ifndef HIGHFIRST
#define byteReverse(buf, len) /* Nothing */
#else
void byteReverse(buf, longs)unsigned char *buf; unsigned longs;
{
 uint32 t;
 do {
 t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |((unsigned) buf[1] << 8 | buf[0]);
 *(uint32 *) buf = t;
 buf += 4;
 } while (--longs);
}
#endif
void MD5Init(ctx)struct MD5Context *ctx;
{
 ctx->buf[0] = 0x67452301;
 ctx->buf[1] = 0xefcdab89;
 ctx->buf[2] = 0x98badcfe;
 ctx->buf[3] = 0x10325476;
 ctx->bits[0] = 0;
 ctx->bits[1] = 0;
}
void MD5Update(ctx, buf, len) struct MD5Context *ctx; unsigned char *buf; unsigned len;
{
 uint32 t;
 t = ctx->bits[0];
 if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
 ctx->bits[1]++;
 ctx->bits[1] += len >> 29;
 t = (t >> 3) & 0x3f;
 if (t) {
 unsigned char *p = (unsigned char *) ctx->in + t;
 t = 64 - t;
 if (len < t) {
 memcpy(p, buf, len);
 return;
 }
 memcpy(p, buf, t);
 byteReverse(ctx->in, 16);
 MD5Transform(ctx->buf, (uint32 *) ctx->in);
 buf += t;
 len -= t;
 }
 while (len >= 64) {
 memcpy(ctx->in, buf, 64);
 byteReverse(ctx->in, 16);
 MD5Transform(ctx->buf, (uint32 *) ctx->in);
 buf += 64;
 len -= 64;
 }
 memcpy(ctx->in, buf, len);
}
void MD5Final(digest, ctx)
 unsigned char digest[16]; struct MD5Context *ctx;
{
 unsigned count;
 unsigned char *p;
 count = (ctx->bits[0] >> 3) & 0x3F;
 p = ctx->in + count;
 *p++ = 0x80;
 count = 64 - 1 - count;
 if (count < 8) {
 memset(p, 0, count);
 byteReverse(ctx->in, 16);
 MD5Transform(ctx->buf, (uint32 *) ctx->in);
 memset(ctx->in, 0, 56);
 } else {
 memset(p, 0, count - 8);
 }
 byteReverse(ctx->in, 14);
 ((uint32 *) ctx->in)[14] = ctx->bits[0];
 ((uint32 *) ctx->in)[15] = ctx->bits[1];
 MD5Transform(ctx->buf, (uint32 *) ctx->in);
 byteReverse((unsigned char *) ctx->buf, 4);
 memcpy(digest, ctx->buf, 16);
 memset(ctx, 0, sizeof(ctx));
}
#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define F2(x, y, z) F1(z, x, y)
#define F3(x, y, z) (x ^ y ^ z)
#define F4(x, y, z) (y ^ (x | ~z))
#define MD5STEP(f, w, x, y, z, data, s) ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
void MD5Transform(buf, in)
 uint32 buf[4]; uint32 in[16];
{
 register uint32 a, b, c, d;
 a = buf[0];
 b = buf[1];
 c = buf[2];
 d = buf[3];
 MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
 MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
 MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
 MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
 MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
 MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
 MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
 MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
 MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
 MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
 MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
 MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
 MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
 MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
 MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
 MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
 MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
 MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
 MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
 MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
 MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
 MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
 MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
 MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
 MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
 MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
 MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
 MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
 MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
 MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
 MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
 MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
 MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
 MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
 MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
 MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
 MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
 MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
 MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
 MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
 MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
 MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
 MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
 MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
 MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
 MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
 MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
 MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
 MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
 MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
 MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
 MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
 MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
 MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
 MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
 MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
 MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
 MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
 MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
 MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
 MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
 MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
 MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
 MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
 buf[0] += a;
 buf[1] += b;
 buf[2] += c;
 buf[3] += d;
}
void GetMd5FromString(const char* s,char* resStr)
{
 struct MD5Context md5c;
 unsigned char ss[16];
 char subStr[3];
 int i;
 MD5Init( &md5c );
 MD5Update( &md5c, s, strlen(s) );
 MD5Final( ss, &md5c );
 strcpy(resStr,"");
 for( i=0; i<16; i++ )
 {
 sprintf(subStr, "%02x", ss[i] );
 itoa(ss[i],subStr,16);
 if (strlen(subStr)==1) {
 strcat(resStr,"0");
 }
 strcat(resStr,subStr);
 }
 strcat(resStr,"");
}

base64

/*
Base 64 Encode and Decode functions for LoadRunner
==================================================
This include file provides functions to Encode and Decode
LoadRunner variables. It's based on source codes found on the
internet and has been modified to work in LoadRunner.

Created by Kim Sandell / Celarius - www.celarius.com
*/
// Encoding lookup table
char base64encode_lut[] = {
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
'R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h',
'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y',
'z','0','1','2','3','4','5','6','7','8','9','+','/','='};

// Decode lookup table
char base64decode_lut[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,62, 0, 0, 0,63,52,53,54,55,56,57,58,59,60,61, 0, 0,
0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25, 0, 0, 0, 0, 0, 0,26,27,28,
29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
49,50,51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };

void base64encode(char *src, char *dest, int len)
// Encodes a buffer to base64
{
 int i=0, slen=strlen(src);
 for(i=0;i<slen && i<len;i+=3,src+=3)
 { // Enc next 4 characters
 *(dest++)=base64encode_lut[(*src&0xFC)>>0x2];
 *(dest++)=base64encode_lut[(*src&0x3)<<0x4|(*(src+1)&0xF0)>>0x4];
 *(dest++)=((i+1)<slen)?base64encode_lut[(*(src+1)&0xF)<<0x2|(*(src+2)&0xC0)>>0x6]:'=';
 *(dest++)=((i+2)<slen)?base64encode_lut[*(src+2)&0x3F]:'=';
 }
 *dest=''; // Append terminator
}

void base64decode(char *src, char *dest, int len)
// Encodes a buffer to base64
{
 int i=0, slen=strlen(src);
 for(i=0;i<slen&&i<len;i+=4,src+=4)
 { // Store next 4 chars in vars for faster access
 char c1=base64decode_lut[*src], c2=base64decode_lut[*(src+1)], c3=base64decode_lut[*(src+2)], c4=base64decode_lut[*(src+3)];
 // Decode to 3 chars
 *(dest++)=(c1&0x3F)<<0x2|(c2&0x30)>>0x4;
 *(dest++)=(c3!=64)?((c2&0xF)<<0x4|(c3&0x3C)>>0x2):'';
 *(dest++)=(c4!=64)?((c3&0x3)<<0x6|c4&0x3F):'';
 }
 *dest=''; // Append terminator
}

int b64_encode_string( char *source, char *lrvar )
// ----------------------------------------------------------------------------
// Encodes a string to base64 format
//
// Parameters:
//        source    Pointer to source string to encode
//        lrvar     LR variable where base64 encoded string is stored
//
// Example:
//
//        b64_encode_string( "Encode Me!", "b64" )
// ----------------------------------------------------------------------------
{
 int dest_size;
 int res;
 char *dest;
 // Allocate dest buffer
 dest_size = 1 + ((strlen(source)+2)/3*4);
 dest = (char *)malloc(dest_size);
 memset(dest,0,dest_size);
 // Encode & Save
 base64encode(source, dest, dest_size);
 lr_save_string( dest, lrvar );
 // Free dest buffer
 res = strlen(dest);
 free(dest);
 // Return length of dest string
 return res;
}

int b64_decode_string( char *source, char *lrvar )
// ----------------------------------------------------------------------------
// Decodes a base64 string to plaintext
//
// Parameters:
//        source    Pointer to source base64 encoded string
//        lrvar     LR variable where decoded string is stored
//
// Example:
//
//        b64_decode_string( lr_eval_string("{b64}"), "Plain" )
// ----------------------------------------------------------------------------
{
 int dest_size;
 int res;
 char *dest;
 // Allocate dest buffer
 dest_size = strlen(source);
 dest = (char *)malloc(dest_size);
 memset(dest,0,dest_size);
 // Encode & Save
 base64decode(source, dest, dest_size);
 lr_save_string( dest, lrvar );
 // Free dest buffer
 res = strlen(dest);
 free(dest);
 // Return length of dest string
 return res;
}

最后一个:天杀的lrw_custom_body.h ----->feedback reward后发送的调查问卷数据请求:

#ifndef _LRW_CUSTOM_BODY_H
#define _LRW_CUSTOM_BODY_H

// Step Name : syncCommit_2 
const char * const body_variable_1 = "BodyBinary=[{\"createDate\":\"2015-06-25T19:26:24+0800\",\"data\":\"{\\\\\"evalBooks\\\\\":[{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000001\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"I plan to enjoy Church\\xE2\\x80\\x99s again soon!!\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":2,\\\\\"parentId\\\\\":\\\\\"FUN0000001\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"STAR_RATE\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000002\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Please rate your experience:\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\"
		"\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":3,\\\\\"parentId\\\\\":\\\\\"FUN0000001\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000003\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"\\\\\",\\\\\"desc1\\\\\":\\\\\"Optional Comment:\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":4,\\\\\"parentId\\\\\":\\\\\"FUN0000001\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000004\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\"
		"\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"My customer service experience was great\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":6,\\\\\"parentId\\\\\":\\\\\"FUN0000002\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000005\\\\\",\\\\\"childrenCount\\\\\":4,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Staff/Manager were attentive to my needs\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":7,\\\\\"parentId\\\\\":\\\\\"FUN0000002\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"val"
		"ue1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000006\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Staff/Manager interaction was friendly\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":12,\\\\\"parentId\\\\\":\\\\\"FUN0000002\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000007\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\"
		"\",\\\\\"displayOrder\\\\\":18,\\\\\"parentId\\\\\":\\\\\"FUN0000002\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000008\\\\\",\\\\\"childrenCount\\\\\":3,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"What I wanted was available\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":20,\\\\\"parentId\\\\\":\\\\\"FUN0000003\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"childrenCount\\\\\":8,\\\\\"dataLevel\\\\\":2,\\"
		"\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"My food was hot, fresh and tasted great\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":24,\\\\\"parentId\\\\\":\\\\\"FUN0000003\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"My order was correct and complete\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":33,\\\\\"parentId\\\\\":\\\\\"FUN0000003\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":nul"
		"l,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000011\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":39,\\\\\"parentId\\\\\":\\\\\"FUN0000003\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000012\\\\\",\\\\\"childrenCount\\\\\":3,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Dining room was clean and attended to\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\"
		"\":41,\\\\\"parentId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000013\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Beverage Area clean and attended to\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":45,\\\\\"parentId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":2,\\\\\"dat"
		"aType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Restrooms were clean and attended to\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":46,\\\\\"parentId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Drive Thru was clean and attended to\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":52,\\\\\"parentId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\"
		"\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000016\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":57,\\\\\"parentId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000017\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Wait time prior to placing my order was fine\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\"
		"\":59,\\\\\"parentId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Ordering Process was smooth and easy\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":60,\\\\\"parentId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000019\\\\\",\\\\\"childrenCount\\\\\":4,\\\\\"dataLevel\\\\\":2,\\\\\"da"
		"taType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Paying for my order was smooth and easy\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":66,\\\\\"parentId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"YES_NO\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000020\\\\\",\\\\\"childrenCount\\\\\":3,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"I received my meal quickly\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":71,\\\\\"parentId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":\\\\\"YES\\\\\",\\\\\"value1\\\\\":null,\\\\\"value"
		"2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"DEV0000021\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":2,\\\\\"dataType\\\\\":\\\\\"Deviate\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":75,\\\\\"parentId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"LABEL\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000001\\\\\",\\\\\"childrenCount\\\\\":3,\\\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Church's Rating\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":1,\\\\\"parentId\\\\\":\\\\\""
		"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"LABEL\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000002\\\\\",\\\\\"childrenCount\\\\\":4,\\\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Customer Service\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":5,\\\\\"parentId\\\\\":\\\\\"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"LABEL\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000003\\\\\",\\\\\"childrenCount\\\\\":4,\\\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"My Food"
		"\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":19,\\\\\"parentId\\\\\":\\\\\"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"LABEL\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000004\\\\\",\\\\\"childrenCount\\\\\":5,\\\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Cleanliness\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":40,\\\\\"parentId\\\\\":\\\\\"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"LABEL\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000005\\\\\",\\\\\"childrenCount\\\\\":5,\\"
		"\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Speed of Service\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":58,\\\\\"parentId\\\\\":\\\\\"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"COMMENT\\\\\",\\\\\"bookId\\\\\":\\\\\"FUN0000006\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":1,\\\\\"dataType\\\\\":\\\\\"Fundamental\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":76,\\\\\"parentId\\\\\":\\\\\"\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\"
		"\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000001\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not attentive\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":8,\\\\\"parentId\\\\\":\\\\\"DEV0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000002\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Didn\\xE2\\x80\\x99t fix problem\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":9,\\\\\"parentId\\\\\":\\\\\"DEV0000005\\\\\",\\"
		"\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000003\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Felt rushed\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":10,\\\\\"parentId\\\\\":\\\\\"DEV0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000004\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Somethin"
		"g else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":11,\\\\\"parentId\\\\\":\\\\\"DEV0000005\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000005\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not thanked/invited back\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":13,\\\\\"parentId\\\\\":\\\\\"DEV0000006\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL0"
		"0000006\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not respected\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":14,\\\\\"parentId\\\\\":\\\\\"DEV0000006\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000007\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Rude\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":15,\\\\\"parentId\\\\\":\\\\\"DEV0000006\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\"
		"\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000008\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"No Smile\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":16,\\\\\"parentId\\\\\":\\\\\"DEV0000006\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000009\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":17,\\\\\"parentId\\\\\":"
		"\\\\\"DEV0000006\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000010\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Out of menu item\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":21,\\\\\"parentId\\\\\":\\\\\"DEV0000008\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000011\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\"
		"\\\"desc0\\\\\":\\\\\"Product is not offered\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":22,\\\\\"parentId\\\\\":\\\\\"DEV0000008\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000012\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":23,\\\\\"parentId\\\\\":\\\\\"DEV0000008\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\","
		"\\\\\"bookId\\\\\":\\\\\"PL00000013\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Temperature\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":25,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000014\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Fresh\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":26,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null"
		",\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000015\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Crispiness\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":27,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000016\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Flavor\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":28,"
		"\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000017\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Greasy\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":29,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000018\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint"
		"\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Overcooked\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":30,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000019\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Portion Size\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":31,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\"
		"\\\"bookId\\\\\":\\\\\"PL00000020\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":32,\\\\\"parentId\\\\\":\\\\\"DEV0000009\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000021\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Missing food\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":34,\\\\\"parentId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\"
		"\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000022\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"No Condiments\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":35,\\\\\"parentId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000023\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"No Serviceware\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"di"
		"splayOrder\\\\\":36,\\\\\"parentId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000024\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Wrong size\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":37,\\\\\"parentId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000025\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist"
		"\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Wrong item\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":38,\\\\\"parentId\\\\\":\\\\\"DEV0000010\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000026\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Tables\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":42,\\\\\"parentId\\\\\":\\\\\"DEV0000012\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"S"
		"ELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000027\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Trash cans\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":43,\\\\\"parentId\\\\\":\\\\\"DEV0000012\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000028\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Floors\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":44,\\\\\"parentId\\\\\":\\\\\"DEV0000012\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"va"
		"lue0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000029\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Toilets\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":47,\\\\\"parentId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000030\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Sink\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder"
		"\\\\\":48,\\\\\"parentId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000031\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Soap\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":49,\\\\\"parentId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000032\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"ded"
		"uctPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Paper Towels\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":50,\\\\\"parentId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000033\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Floors\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":51,\\\\\"parentId\\\\\":\\\\\"DEV0000014\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\""
		",\\\\\"bookId\\\\\":\\\\\"PL00000034\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Trash\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":53,\\\\\"parentId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000035\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Food Debris\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":54,\\\\\"parentId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":nul"
		"l,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000036\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not clean\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":55,\\\\\"parentId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000037\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not Well Lit\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\"
		"\":56,\\\\\"parentId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000038\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":56,\\\\\"parentId\\\\\":\\\\\"DEV0000015\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000039\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\"
		"\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Not smooth\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":61,\\\\\"parentId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000040\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Long Wait\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":62,\\\\\"parentId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTI"
		"ON\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000041\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Communication\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":63,\\\\\"parentId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000042\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Cashier\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":64,\\\\\"parentId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"valu"
		"e0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000043\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":65,\\\\\"parentId\\\\\":\\\\\"DEV0000018\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000044\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Coupon\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displ"
		"ayOrder\\\\\":67,\\\\\"parentId\\\\\":\\\\\"DEV0000019\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000045\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Credit Card\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":68,\\\\\"parentId\\\\\":\\\\\"DEV0000019\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000046\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\"
		"\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Cashier\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":69,\\\\\"parentId\\\\\":\\\\\"DEV0000019\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000047\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Something else\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":70,\\\\\"parentId\\\\\":\\\\\"DEV0000019\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\"
		"\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000048\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Waited for food\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":72,\\\\\"parentId\\\\\":\\\\\"DEV0000020\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000049\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Staff lacked Urgency\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":73,\\\\\"parentId\\\\\":\\\\\"DEV0000020\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"point"
		"Value\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"},{\\\\\"answerType\\\\\":\\\\\"SELECTION\\\\\",\\\\\"bookId\\\\\":\\\\\"PL00000050\\\\\",\\\\\"childrenCount\\\\\":0,\\\\\"dataLevel\\\\\":3,\\\\\"dataType\\\\\":\\\\\"Picklist\\\\\",\\\\\"deductPoint\\\\\":0,\\\\\"desc0\\\\\":\\\\\"Staff not attentive\\\\\",\\\\\"desc1\\\\\":\\\\\"\\\\\",\\\\\"displayId\\\\\":\\\\\"\\\\\",\\\\\"displayOrder\\\\\":74,\\\\\"parentId\\\\\":\\\\\"DEV0000020\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"pointValue\\\\\":0,\\\\\"value0\\\\\":null,\\\\\"value1\\\\\":null,\\\\\"value2\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\"}],\\\\\"evalPerform\\\\\":{\\\\\"accountNumber\\\\\":\\\\\"10303\\\\\",\\\\\"address\\\\\":null,\\\\\"visitType\\\\\":\\\\\"DT\\\\\",\\\\\"appVersion\\\\\":\\\\\"1.3.5\\\\\",\\\\\"beginTime\\\\\":null,\\\\\"bmu\\\\\":\\\\\"CH\\\\\",\\\\\"city\\\\\":null,\\\\\"concept\\\\\":\\\\\"SV\\\\\",\\\\"
		"\"contactEmail\\\\\":null,\\\\\"contactPhone\\\\\":null,\\\\\"country\\\\\":null,\\\\\"createDate\\\\\":\\\\\"2015-06-17T19:26:24+0800\\\\\",\\\\\"dayPart\\\\\":\\\\\"\\\\\",\\\\\"endTime\\\\\":null,\\\\\"firstName\\\\\":\\\\\"\\\\\",\\\\\"lastName\\\\\":\\\\\"\\\\\",\\\\\"lockDate\\\\\":\\\\\"2015-06-17T19:26:24+0800\\\\\",\\\\\"performId\\\\\":\\\\\"{performid}\\\\\",\\\\\"performType\\\\\":null,\\\\\"rating\\\\\":5,\\\\\"receiptImgUrl\\\\\":null,\\\\\"receiptNumber\\\\\":null,\\\\\"score\\\\\":0,\\\\\"serverCreateDate\\\\\":null,\\\\\"serverVerifyDate\\\\\":null,\\\\\"source\\\\\":\\\\\"Android\\\\\",\\\\\"state\\\\\":null,\\\\\"status\\\\\":\\\\\"P\\\\\",\\\\\"timezone\\\\\":0,\\\\\"userId\\\\\":\\\\\"{pid}\\\\\",\\\\\"userSeqId\\\\\":0,\\\\\"verified\\\\\":false,\\\\\"verifyDate\\\\\":null,\\\\\"versionId\\\\\":\\\\\"CH.SV.2015.01\\\\\",\\\\\"visitDate\\\\\":null,\\\\\"agreeContact\\\\\":false},\\\\\"userLocation\\\\\":null}\",\"dataId\":\"{performid}\",\"format\""
		":\"json\",\"imgData\":\"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
### 关于优惠券管理系统或API的技术背景 在信息技术领域,优惠券管理系统的实现通常依赖于微服务架构以及RESTful API的设计模式。通过这些技术手段,可以构建灵活且可扩展的应用程序接口(API),用于管理和分发优惠券。 #### 微服务中的控制器设计 在一个典型的微服务项目中,类似于`OpenFeignController`这样的类被用来处理HTTP请求并调用远程服务[^1]。例如,在一个优惠券管理系统中,可能会存在类似的结构来接收前端发送的消息或者参数,并将其传递给后台的服务层进行进一步处理: ```java @RestController public class CouponManagementController { @Autowired private CouponService couponService; @PostMapping("/api/coupon/create") public ResponseEntity<String> createCoupon(@RequestBody CouponRequest request) { boolean result = couponService.create(request); return result ? ResponseEntity.ok("Success") : ResponseEntity.badRequest().body("Failed"); } } ``` 上述代码片段展示了一个简单的创建优惠券功能的API端点定义[^3]。它接受来自客户端的一个JSON对象作为输入数据(`@RequestBody`)并通过注入的服务组件执行具体的业务逻辑操作。 #### 测试与调试环境配置 对于实际部署前的功能验证阶段,则需要设置好相应的测试服务器地址以便开发者能够顺利完成前后端联合调试工作[^2]。比如当涉及到第三方存储桶策略获取时可能就需要访问类似下面这样一个URL路径来进行相关资源权限控制方面的探索研究——即`http://localhost:88/api/thirdparty/oss/policy`。 综上所述,在现代软件开发过程中,“优惠券管理系统”不仅限于单一模块内部事务处理能力提升那么简单;更重要的是如何借助先进的网络通信协议标准(如HTTP)、编程范式转变(面向对象到函数式风格过渡期间所积累的经验教训等等),再加上合理运用容器化技术和自动化运维工具链之后才能真正意义上达到高效稳定运行状态下的商业价值最大化目标!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值