备注:使用Groovy语言进行编写,看不懂的同学请先了解Groovy脚本。
Groovy学习地址:https://www.cnblogs.com/tiechui2015/p/10828457.html。
本段程序实现的功能如下:
一、开关的维度是商户、机构、配置代码维度。设置有效标识控制是否生效。
二、采用All代表全商户特殊值,在商户号中配置All则表示该开关在某机构下全商户生效;
采用H代表H5商户特殊值,在商户号中配置H则表示该开关在某机构下H5商户生效;
采用S代表接口接入商户特殊值,在商户号中配置S则表示该开关在某机构下接口接入商户生效。
三、商户号值为All,机构值为03,表示在整个系统中该开关都生效。
商户号值为S,机构值为03,表示在整个标准对接的全机构中该开关都生效。
商户号值为H,机构值为03,表示在整个H5商户的全机构中该开关都生效。
四、支持多商户以逗号分隔、多机构以逗号分隔的配置方式及多商户多机构均以逗号分隔的配置形式。
五、考虑通用性问题,支持五级机构向上递增配置。
检索五级机构,五级机构配置则直接。
五级机构未配置或配置已失效,则检索四级机构配置。
四级机构未配置或配置已失效,则检索三级机构配置。
三级机构未配置或配置已失效,则检索二级机构配置。
二级机构未配置或配置已失效,则检索一级机构配置。
一级机构未配置或配置已失效,则开关未配置。
/** * * 开关配置脚本 * * 2019-11-07 * * in * clientNo : 商户号 * companyCode : 机构代码 * configCode : 配置代码 * * out * isRightSwitch(01) * 0:关 * 1:开 **/ def isRightSwitch = false; def queryConfigInfo = []; queryConfigInfo = $$.query('queryGeneralSwitch',[clientName:"All",companyCode:"03",configCode:configCode]); if(!queryConfigInfo){ if(clientNo.contains("H")){ def subCompany = ""; int j = 0; for (int i = companyCode.length(); j <= (i * j);j++) { subCompany = companyCode.substring(0,i); queryConfigInfo = $$.query('queryGeneralSwitch',[clientName:"H",companyCode:subCompany,configCode:configCode]); if(queryConfigInfo){ // isRightSwitch = queryConfigInfo.configValue; // // return isRightSwitch; isRightSwitch = true; return isRightSwitch; } i=i-2; } }else if(clientNo.contains("S")){ def subCompany = ""; int j = 0; for (int i = companyCode.length();j <= (i * j);j++) { subCompany = companyCode.substring(0,i); queryConfigInfo = $$.query('queryGeneralSwitch',[clientName:"S",companyCode:subCompany,configCode:configCode]); if(queryConfigInfo){ // isRightSwitch = queryConfigInfo.configValue; isRightSwitch = true; return isRightSwitch; } i=i-2; } } if(!queryConfigInfo){ def subCompany = ""; int j = 0; for (int i = companyCode.length(); j <= (i * j);j++) { subCompany = companyCode.substring(0,i); queryConfigInfo = $$.query('queryGeneralSwitch',[clientName:clientNo,companyCode:subCompany,configCode:configCode]); if(queryConfigInfo){ // isRightSwitch = queryConfigInfo.configValue; // // return isRightSwitch; isRightSwitch = true; return isRightSwitch; } i=i-2; } } }else{ // isRightSwitch = queryConfigInfo.configValue; // // return isRightSwitch; isRightSwitch = true; return isRightSwitch; }