Commit 65dd2bf8 authored by 黎博's avatar 黎博

Merge branch 'master' into automation

parents 88e47805 bf1c946b
package cn.qg.qaplatform.mock.controller; package cn.qg.qaplatform.mock.controller;
import cn.qg.qaplatform.mock.service.MockService;
import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mock.entity.Mock; import cn.qg.qaplatform.mock.entity.Mock;
import cn.qg.qaplatform.mock.mapper.MockMapper; import cn.qg.qaplatform.mock.service.MockService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.qg.qaplatform.utils.JsonResult;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
......
...@@ -3,23 +3,19 @@ package cn.qg.qaplatform.mock.interceptor; ...@@ -3,23 +3,19 @@ package cn.qg.qaplatform.mock.interceptor;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mock.encrypt.factory.EncryptConvertor; import cn.qg.qaplatform.mock.encrypt.factory.EncryptConvertor;
import cn.qg.qaplatform.mock.encrypt.factory.EncryptFactory; import cn.qg.qaplatform.mock.encrypt.factory.EncryptFactory;
import cn.qg.qaplatform.mock.encrypt.paycenter.Aes;
import cn.qg.qaplatform.mock.encrypt.paycenter.Rsa;
import cn.qg.qaplatform.mock.entity.Mock; import cn.qg.qaplatform.mock.entity.Mock;
import cn.qg.qaplatform.mock.mapper.MockMapper; import cn.qg.qaplatform.mock.mapper.MockMapper;
import cn.qg.qaplatform.mock.utils.BankCardUtils;
import cn.qg.qaplatform.utils.JsonTransUtils; import cn.qg.qaplatform.utils.JsonTransUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -34,19 +30,40 @@ public class PayInterceptor implements HandlerInterceptor { ...@@ -34,19 +30,40 @@ public class PayInterceptor implements HandlerInterceptor {
private String namespace = "pre"; private String namespace = "pre";
/** /**
* 获取HttpServletRequest的body * 将HttpServletRequest的parameterMap由Map<String, String[]>转换成Map<String, Object>
* @param request HttpServletRequest * @param parameterMap
* @return * @return
* @throws IOException
*/ */
private String getRequestBody(HttpServletRequest request) throws IOException { public Map<String, Object> requestMapTrans(Map<String, String[]> parameterMap) {
BufferedReader br = request.getReader(); Map<String, Object> map = new HashMap<>();
String str; for (Map.Entry<String, String[]> entry: parameterMap.entrySet()) {
StringBuilder wholeStr = new StringBuilder(); String key = entry.getKey();
while((str = br.readLine()) != null){ String value = entry.getValue()[0];
wholeStr.append(str); map.put(key, value);
} }
return wholeStr.toString(); return map;
}
/**
* 接口/tzt-api/api/bankcard/check 请求的mock响应
* @param cardNo 银行卡号
* @param merchantno 商户号
* @return 响应Map
*/
public Map<String, Object> getBankcardCheckResponse(String cardNo, String merchantno) {
Map<String, Object> map = new HashMap<>();
String bankCode = BankCardUtils.getCardCode(cardNo);
String bankName = BankCardUtils.getBankName(bankCode);
map.put("bankCode", bankCode);
map.put("bankName", bankName);
map.put("cardTop", cardNo.substring(0, 5));
map.put("cardlast", cardNo.substring(cardNo.length()-4));
map.put("cardtype", "DEBIT");
map.put("errorcode", "");
map.put("errormsg", "");
map.put("isvalid", "VALID");
map.put("merchantno", merchantno);
return map;
} }
@Override @Override
...@@ -54,6 +71,8 @@ public class PayInterceptor implements HandlerInterceptor { ...@@ -54,6 +71,8 @@ public class PayInterceptor implements HandlerInterceptor {
throws Exception { throws Exception {
SwitchDataSource.dataSourceSwitch(namespace, "qa"); SwitchDataSource.dataSourceSwitch(namespace, "qa");
String uri = request.getRequestURI().substring(5); String uri = request.getRequestURI().substring(5);
Map<String, String[]> parameterMap = request.getParameterMap();
log.info("打印请求参数:{}", parameterMap);
QueryWrapper<Mock> queryWrapper = new QueryWrapper<>(); QueryWrapper<Mock> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("url", uri); queryWrapper.eq("url", uri);
Mock mock = mockMapper.selectOne(queryWrapper); Mock mock = mockMapper.selectOne(queryWrapper);
...@@ -62,8 +81,15 @@ public class PayInterceptor implements HandlerInterceptor { ...@@ -62,8 +81,15 @@ public class PayInterceptor implements HandlerInterceptor {
PrintWriter printWriter = response.getWriter(); PrintWriter printWriter = response.getWriter();
// 对request进行解密 // 对request进行解密
EncryptConvertor encryptConvertor = EncryptFactory.produce("yeebao"); EncryptConvertor encryptConvertor = EncryptFactory.produce("yeebao");
Map<String, Object> requestMap = JsonTransUtils.strToMap(encryptConvertor.decrypt(getRequestBody(request))); Map<String, Object> requestMap = JsonTransUtils.strToMap(encryptConvertor.decrypt(JsonTransUtils.mapToJson(requestMapTrans(parameterMap))));
Map<String, Object> responseMap = new HashMap<>(); Map<String, Object> responseMap = new HashMap<>();
if (uri.equals("/tzt-api/api/bankcard/check")) {
String cardNo = requestMap.get("cardno").toString();
String merchantno = requestMap.get("merchantno").toString();
responseMap = getBankcardCheckResponse(cardNo, merchantno);
printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
return true;
}
if (mock.getFlag().equals(1)) { if (mock.getFlag().equals(1)) {
responseMap = JsonTransUtils.strToMap(mock.getSuccess()); responseMap = JsonTransUtils.strToMap(mock.getSuccess());
} else if (mock.getFlag().equals(0)) { } else if (mock.getFlag().equals(0)) {
......
package cn.qg.qaplatform.mock.utils;
import cn.qg.qaplatform.utils.HttpClientUtils;
import com.alibaba.fastjson.JSONObject;
public class BankCardUtils {
public static String getCardCode(String cardNo) {
String url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + cardNo + "&cardBinCheck=true";
JSONObject resposne = HttpClientUtils.doGetReturnJson(url);
return resposne.get("bank").toString();
}
public static void main(String[] args) {
System.out.println(getBankName("CCB"));
}
public static String getBankName(String code){
int a = 0;
for (int i = 0; i < bankBin.length-165; i++) {
if(code.equals(bankBin[i+a])){
return bankBin[i+a+1];
}
a++;
}
return "";
}
private final static String[] bankBin = {
"SRCB", "深圳农村商业银行",
"BGB", "广西北部湾银行",
"SHRCB", "上海农村商业银行",
"BJBANK", "北京银行",
"WHCCB", "威海市商业银行",
"BOZK", "周口银行",
"KORLABANK", "库尔勒市商业银行",
"SPABANK", "平安银行",
"SDEB", "顺德农商银行",
"HURCB", "湖北省农村信用社",
"WRCB", "无锡农村商业银行",
"BOCY", "朝阳银行",
"CZBANK", "浙商银行",
"HDBANK", "邯郸银行",
"BOC", "中国银行",
"BOD", "东莞银行",
"CCB", "中国建设银行",
"ZYCBANK", "遵义市商业银行",
"SXCB", "绍兴银行",
"GZRCU", "贵州省农村信用社",
"ZJKCCB", "张家口市商业银行",
"BOJZ", "锦州银行",
"BOP", "平顶山银行",
"HKB", "汉口银行",
"SPDB", "上海浦东发展银行",
"NXRCU", "宁夏黄河农村商业银行",
"NYNB", "广东南粤银行",
"GRCB", "广州农商银行",
"BOSZ", "苏州银行",
"HZCB", "杭州银行",
"HSBK", "衡水银行",
"HBC", "湖北银行",
"JXBANK", "嘉兴银行",
"HRXJB", "华融湘江银行",
"BODD", "丹东银行",
"AYCB", "安阳银行",
"EGBANK", "恒丰银行",
"CDB", "国家开发银行",
"TCRCB", "江苏太仓农村商业银行",
"NJCB", "南京银行",
"ZZBANK", "郑州银行",
"DYCB", "德阳商业银行",
"YBCCB", "宜宾市商业银行",
"SCRCU", "四川省农村信用",
"KLB", "昆仑银行",
"LSBANK", "莱商银行",
"YDRCB", "尧都农商行",
"CCQTGB", "重庆三峡银行",
"FDB", "富滇银行",
"JSRCU", "江苏省农村信用联合社",
"JNBANK", "济宁银行",
"CMB", "招商银行",
"JINCHB", "晋城银行JCBANK",
"FXCB", "阜新银行",
"WHRCB", "武汉农村商业银行",
"HBYCBANK", "湖北银行宜昌分行",
"TZCB", "台州银行",
"TACCB", "泰安市商业银行",
"XCYH", "许昌银行",
"CEB", "中国光大银行",
"NXBANK", "宁夏银行",
"HSBANK", "徽商银行",
"JJBANK", "九江银行",
"NHQS", "农信银清算中心",
"MTBANK", "浙江民泰商业银行",
"LANGFB", "廊坊银行",
"ASCB", "鞍山银行",
"KSRB", "昆山农村商业银行",
"YXCCB", "玉溪市商业银行",
"DLB", "大连银行",
"DRCBCL", "东莞农村商业银行",
"GCB", "广州银行",
"NBBANK", "宁波银行",
"BOYK", "营口银行",
"SXRCCU", "陕西信合",
"GLBANK", "桂林银行",
"BOQH", "青海银行",
"CDRCB", "成都农商银行",
"QDCCB", "青岛银行",
"HKBEA", "东亚银行",
"HBHSBANK", "湖北银行黄石分行",
"WZCB", "温州银行",
"TRCB", "天津农商银行",
"QLBANK", "齐鲁银行",
"GDRCC", "广东省农村信用社联合社",
"ZJTLCB", "浙江泰隆商业银行",
"GZB", "赣州银行",
"GYCB", "贵阳市商业银行",
"CQBANK", "重庆银行",
"DAQINGB", "龙江银行",
"CGNB", "南充市商业银行",
"SCCB", "三门峡银行",
"CSRCB", "常熟农村商业银行",
"SHBANK", "上海银行",
"JLBANK", "吉林银行",
"CZRCB", "常州农村信用联社",
"BANKWF", "潍坊银行",
"ZRCBANK", "张家港农村商业银行",
"FJHXBC", "福建海峡银行",
"ZJNX", "浙江省农村信用社联合社",
"LZYH", "兰州银行",
"JSB", "晋商银行",
"BOHAIB", "渤海银行",
"CZCB", "浙江稠州商业银行",
"YQCCB", "阳泉银行",
"SJBANK", "盛京银行",
"XABANK", "西安银行",
"BSB", "包商银行",
"JSBANK", "江苏银行",
"FSCB", "抚顺银行",
"HNRCU", "河南省农村信用",
"COMM", "交通银行",
"XTB", "邢台银行",
"CITIC", "中信银行",
"HXBANK", "华夏银行",
"HNRCC", "湖南省农村信用社",
"DYCCB", "东营市商业银行",
"ORBANK", "鄂尔多斯银行",
"BJRCB", "北京农村商业银行",
"XYBANK", "信阳银行",
"ZGCCB", "自贡市商业银行",
"CDCB", "成都银行",
"HANABANK", "韩亚银行",
"CMBC", "中国民生银行",
"LYBANK", "洛阳银行",
"GDB", "广东发展银行",
"ZBCB", "齐商银行",
"CBKF", "开封市商业银行",
"H3CB", "内蒙古银行",
"CIB", "兴业银行",
"CRCBANK", "重庆农村商业银行",
"SZSBK", "石嘴山银行",
"DZBANK", "德州银行",
"SRBANK", "上饶银行",
"LSCCB", "乐山市商业银行",
"JXRCU", "江西省农村信用",
"ICBC", "中国工商银行",
"JZBANK", "晋中市商业银行",
"HZCCB", "湖州市商业银行",
"NHB", "南海农村信用联社",
"XXBANK", "新乡银行",
"JRCB", "江苏江阴农村商业银行",
"YNRCC", "云南省农村信用社",
"ABC", "中国农业银行",
"GXRCU", "广西省农村信用",
"PSBC", "中国邮政储蓄银行",
"BZMD", "驻马店银行",
"ARCU", "安徽省农村信用社",
"GSRCU", "甘肃省农村信用",
"LYCB", "辽阳市商业银行",
"JLRCU", "吉林农信",
"URMQCCB", "乌鲁木齐市商业银行",
"XLBANK", "中山小榄村镇银行",
"CSCB", "长沙银行",
"JHBANK", "金华银行",
"BHB", "河北银行",
"NBYZ", "鄞州银行",
"LSBC", "临商银行",
"BOCD", "承德银行",
"SDRCU", "山东农信",
"NCB", "南昌银行",
"TCCB", "天津银行",
"WJRCB", "吴江农商银行",
"CBBQS", "城市商业银行资金清算中心",
"HBRCU", "河北省农村信用社"
};
}
...@@ -17,10 +17,10 @@ import java.util.List; ...@@ -17,10 +17,10 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class Xyqb { public class Xyqb {
public static String namespace = "vcc2"; public static String namespace = "vcc3";
public static Integer channelId = 1; public static Integer channelId = 1;
public static Integer fundId = 480; public static Integer fundId = 480;
public static String phone = "18300000120"; public static String phone = "13502760991";
public static String token = ""; public static String token = "";
public static String uuid = ""; public static String uuid = "";
public static Long userId; public static Long userId;
...@@ -664,34 +664,34 @@ public class Xyqb { ...@@ -664,34 +664,34 @@ public class Xyqb {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// 分配资金方 // 分配资金方
loginFundOP(); // loginFundOP();
unblockLoan(); // unblockLoan();
boolean result = assignFundOrNot(); // boolean result = assignFundOrNot();
if (!result) { // if (!result) {
setFundPlan(); // setFundPlan();
unblockLoan(); // unblockLoan();
} // }
//
// 授信 //// 授信
login(); // login();
checkUserId(); // checkUserId();
// 如果是云信,则需要插入银行卡 // // 如果是云信,则需要插入银行卡
if (fundId == 1040) { // if (fundId == 1040) {
insertBankCardOfYunxing(); // insertBankCardOfYunxing();
} // }
syncSessionToXyqb(); // syncSessionToXyqb();
creditSessionSync(); // creditSessionSync();
realNameVerified(); // realNameVerified();
authBasicInfo(); // authBasicInfo();
enterAuthOcr(); // enterAuthOcr();
uploadFrontOfIdCard(); // uploadFrontOfIdCard();
uploadBackOfIdCard(); // uploadBackOfIdCard();
submitPhotoAuth(); // submitPhotoAuth();
credit(); // credit();
submitAudit(); // submitAudit();
queryUserAuditRecord(); // queryUserAuditRecord();
creditAuthNotify(); // creditAuthNotify();
Thread.sleep(180000); // Thread.sleep(180000);
// 绑卡提现 // 绑卡提现
login(); login();
...@@ -701,21 +701,21 @@ public class Xyqb { ...@@ -701,21 +701,21 @@ public class Xyqb {
getUserAccountId(); getUserAccountId();
bindCard(); bindCard();
cardAuthSms(); cardAuthSms();
cardAuthSmsConfirm(); // cardAuthSmsConfirm();
getBindCardList(); // getBindCardList();
createLoan(); // createLoan();
externalQuotaOrderAuditNotify(); // externalQuotaOrderAuditNotify();
modifyContactStatus(); // modifyContactStatus();
Thread.sleep(10000); // Thread.sleep(10000);
// 放款 // // 放款
loginOP(); // loginOP();
checkWaitingFundingCorpOperatePeople(); // checkWaitingFundingCorpOperatePeople();
modifyWaitingFundingCreatedAt(); // modifyWaitingFundingCreatedAt();
Thread.sleep(10000); // Thread.sleep(10000);
fundsPlanLoanApply(); // fundsPlanLoanApply();
Thread.sleep(10000); // Thread.sleep(10000);
payNotify(); // payNotify();
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment