CasllBackDataProcessor.java 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242
  1. package com.tiangua.star.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.tiangua.star.enmus.CommercialCallBackReadyEnum;
  6. import com.tiangua.star.model.CustomerFollowup;
  7. import com.tiangua.star.model.ThirdStarDto;
  8. import com.tiangua.star.model.XdOrderDto;
  9. import com.tiangua.star.service.CallBackService;
  10. import com.tiangua.star.util.HttpClientThreeUtil;
  11. import com.tiangua.star.util.SignUtil;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.apache.commons.codec.digest.DigestUtils;
  14. import org.apache.commons.collections4.CollectionUtils;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.apache.http.impl.client.CloseableHttpClient;
  17. import org.apache.http.impl.client.HttpClients;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.stereotype.Service;
  20. import java.math.BigDecimal;
  21. import java.security.MessageDigest;
  22. import java.security.NoSuchAlgorithmException;
  23. import java.util.ArrayList;
  24. import java.util.Date;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.TreeMap;
  29. import java.util.function.Function;
  30. import java.util.stream.Collectors;
  31. @Service
  32. @Slf4j
  33. public class CasllBackDataProcessor implements CallBackService {
  34. // HTTP请求工具
  35. private static final CloseableHttpClient httpClient = HttpClients.createDefault();
  36. @Value("${md5.callback.url}")
  37. private String url;
  38. /**
  39. * 处理机构数据入口
  40. */
  41. @Override
  42. public void processInstitutionData(List<XdOrderDto> xdOrderDtos,Map<String, String> resultMap) {
  43. Map<String, List<String>> groupedByBusiId = xdOrderDtos.stream()
  44. .collect(Collectors.groupingBy(
  45. XdOrderDto::getProductBizId,
  46. Collectors.mapping(XdOrderDto::getMobileMd5, Collectors.toList())
  47. ));
  48. Map<String, List<String>> callBackMap = groupedByBusiId.entrySet().stream()
  49. .filter(entry -> CommercialCallBackReadyEnum.of(entry.getKey()) != null)
  50. .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
  51. log.info("已经对接md5星级回传的机构id:{}", callBackMap.keySet());
  52. if (CollectionUtils.isEmpty(callBackMap.keySet())) {
  53. log.info("MD5 无需要处理的星级回传:{}", callBackMap.keySet());
  54. return;
  55. }
  56. for (String productBizId : callBackMap.keySet()) {
  57. CommercialCallBackReadyEnum commercialCallBackReadyEnum = CommercialCallBackReadyEnum.of(productBizId);
  58. if (commercialCallBackReadyEnum != null) {
  59. switch (commercialCallBackReadyEnum) {
  60. case Commercial_ONE:
  61. List<String> md5List = callBackMap.get(productBizId);
  62. log.info("开始处理机构id:{},当日订单数:{},条数:{}", productBizId,md5List,md5List.size());
  63. if (CollectionUtils.isEmpty(md5List)) {
  64. return;
  65. }
  66. sendGetRequest(CommercialCallBackReadyEnum.Commercial_ONE.getCode(),
  67. CommercialCallBackReadyEnum.Commercial_ONE.getBusid(),commercialCallBackReadyEnum.getUrl(),md5List);
  68. break;
  69. case Commercial_LSDJC://乐山都聚财信息技术咨询有限公司
  70. List<String> md5ListLSDJC = callBackMap.get(productBizId);
  71. log.info("开始处理机构id:{},乐山都聚财信息技术咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListLSDJC,md5ListLSDJC.size());
  72. if (CollectionUtils.isEmpty(md5ListLSDJC)) {
  73. return;
  74. }
  75. String channelTypeLSDJC="21180";
  76. String accessKeyLSDJC="3438EBF8-95AC-4739-8B32-59D273D38689";
  77. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  78. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeLSDJC,accessKeyLSDJC,"乐山都聚财信息技术咨询有限公司",md5ListLSDJC,resultMap);
  79. break;
  80. case Commercial_LSDJ://乐山都聚财信息技术咨询有限公司
  81. List<String> md5ListLSDJ = callBackMap.get(productBizId);
  82. log.info("开始处理机构id:{},乐山都聚财信息技术咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListLSDJ,md5ListLSDJ.size());
  83. if (CollectionUtils.isEmpty(md5ListLSDJ)) {
  84. return;
  85. }
  86. String channelTypeLSDJ="21180";
  87. String accessKeyLSDJ="04F9A42A-A240-4CAB-84ED-530C54091341";
  88. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  89. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeLSDJ,accessKeyLSDJ,"乐山都聚财信息技术咨询有限公司",md5ListLSDJ,resultMap);
  90. break;
  91. case Commercial_SCNAZC://四川诺安至诚信息科技有限公司
  92. List<String> md5ListSCNAZC = callBackMap.get(productBizId);
  93. log.info("开始处理机构id:{},四川诺安至诚信息科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListSCNAZC,md5ListSCNAZC.size());
  94. if (CollectionUtils.isEmpty(md5ListSCNAZC)) {
  95. return;
  96. }
  97. String channelTypeSCNAZC="21180";
  98. String accessKeySCNAZC="818DF3C7-0B11-4043-B7ED-84508F2C00EF";
  99. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  100. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeSCNAZC,accessKeySCNAZC,"四川诺安至诚信息科技有限公司",md5ListSCNAZC,resultMap);
  101. break;
  102. case Commercial_SCNA://四川诺安至诚信息科技有限公司
  103. List<String> md5ListSCNA = callBackMap.get(productBizId);
  104. log.info("开始处理机构id:{},四川诺安至诚信息科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListSCNA,md5ListSCNA.size());
  105. if (CollectionUtils.isEmpty(md5ListSCNA)) {
  106. return;
  107. }
  108. String channelTypeSCNA="21180";
  109. String accessKeySCNA="9F417567-6A56-41F6-BD9B-D86DB92C5661";
  110. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  111. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeSCNA,accessKeySCNA,"四川诺安至诚信息科技有限公司",md5ListSCNA,resultMap);
  112. break;
  113. case Commercial_GZWA://广州维安信息咨询有限公司
  114. List<String> md5ListGZWA = callBackMap.get(productBizId);
  115. log.info("开始处理机构id:{},广州维安信息咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListGZWA,md5ListGZWA.size());
  116. if (CollectionUtils.isEmpty(md5ListGZWA)) {
  117. return;
  118. }
  119. String channelType="21160";
  120. String accessKey="4A79FD90-DA94-4D4B-AECD-BC48CD418970";
  121. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  122. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelType,accessKey,"弘盛信息咨询有限公司",md5ListGZWA,resultMap);
  123. break;
  124. case Commercial_TSSX://唐山硕鑫科技有限公司
  125. List<String> md5ListTSSX = callBackMap.get(productBizId);
  126. log.info("开始处理机构id:{},唐山硕鑫科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListTSSX,md5ListTSSX.size());
  127. if (CollectionUtils.isEmpty(md5ListTSSX)) {
  128. return;
  129. }
  130. String channelTypeTSSX="21540";
  131. String accessKeyTSSX="5D3842E0-7A2E-4077-8985-16F9782A0950";
  132. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  133. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeTSSX,accessKeyTSSX,"唐山硕鑫科技有限公司",md5ListTSSX,resultMap);
  134. break;
  135. case Commercial_SZRJX://苏州荣聚鑫科技有限公司
  136. List<String> md5ListSZRJX = callBackMap.get(productBizId);
  137. log.info("开始处理机构id:{},苏州荣聚鑫科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListSZRJX,md5ListSZRJX.size());
  138. if (CollectionUtils.isEmpty(md5ListSZRJX)) {
  139. return;
  140. }
  141. String channelTypeSZRJX="21540";
  142. String accessKeySZRJX="8AF3F228-913D-4430-883A-2CEA88D8657E";
  143. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  144. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeSZRJX,accessKeySZRJX,"苏州荣聚鑫科技有限公司",md5ListSZRJX,resultMap);
  145. break;
  146. case Commercial_GZXX://广州星象信息科技有限公司
  147. List<String> md5ListGZXX = callBackMap.get(productBizId);
  148. log.info("开始处理机构id:{},广州星象信息科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListGZXX,md5ListGZXX.size());
  149. if (CollectionUtils.isEmpty(md5ListGZXX)) {
  150. return;
  151. }
  152. String channelTypeGZXX="21540";
  153. String accessKeyGZXX="8620FAD8-775C-4416-BB10-1486F008D2AA";
  154. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  155. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeGZXX,accessKeyGZXX,"广州星象信息科技有限公司",md5ListGZXX,resultMap);
  156. break;
  157. case Commercial_YBDSHY://延边鼎晟合盈企业管理有限公司
  158. List<String> md5ListYBDSHY = callBackMap.get(productBizId);
  159. log.info("开始处理机构id:{},延边鼎晟合盈企业管理有限公司 当日订单数:{},条数:{}", productBizId,md5ListYBDSHY,md5ListYBDSHY.size());
  160. if (CollectionUtils.isEmpty(md5ListYBDSHY)) {
  161. return;
  162. }
  163. String channelTypeYBDSHY="21540";
  164. String accessKeyYBDSHY="73F3F2EB-1687-44A2-B647-4C00B8DDB77A";
  165. sendGetRequestGZWA(commercialCallBackReadyEnum.getCode(),
  166. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),channelTypeYBDSHY,accessKeyYBDSHY,"延边鼎晟合盈企业管理有限公司",md5ListYBDSHY,resultMap);
  167. break;
  168. case Commercial_XNLJKJ://西宁蓝鲸优享科技有限公司
  169. List<String> md5ListXNLJKJ = callBackMap.get(productBizId);
  170. log.info("开始处理机构id:{},西宁蓝鲸优享科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListXNLJKJ,md5ListXNLJKJ.size());
  171. if (CollectionUtils.isEmpty(md5ListXNLJKJ)) {
  172. return;
  173. }
  174. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  175. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"西宁蓝鲸优享科技有限公司",resultMap);
  176. break;
  177. case Commercial_CQHYJF://重庆寰宇金福信息科技有限公司
  178. List<String> md5ListCQHYJF = callBackMap.get(productBizId);
  179. log.info("开始处理机构id:{},重庆寰宇金福信息科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListCQHYJF,md5ListCQHYJF.size());
  180. if (CollectionUtils.isEmpty(md5ListCQHYJF)) {
  181. return;
  182. }
  183. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  184. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"重庆寰宇金福信息科技有限公司",resultMap);
  185. break;
  186. case Commercial_SRLF://速融(廊坊)信息咨询服务有限公司
  187. List<String> md5ListSRLF = callBackMap.get(productBizId);
  188. log.info("开始处理机构id:{},速融(廊坊)信息咨询服务有限公司 当日订单数:{},条数:{}", productBizId,md5ListSRLF,md5ListSRLF.size());
  189. if (CollectionUtils.isEmpty(md5ListSRLF)) {
  190. return;
  191. }
  192. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  193. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"速融(廊坊)信息咨询服务有限公司",resultMap);
  194. break;
  195. case Commercial_NJCXS://南京诚享顺科技有限公司
  196. List<String> md5ListNJCXS = callBackMap.get(productBizId);
  197. log.info("开始处理机构id:{},南京诚享顺科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListNJCXS,md5ListNJCXS.size());
  198. if (CollectionUtils.isEmpty(md5ListNJCXS)) {
  199. return;
  200. }
  201. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  202. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"南京诚享顺科技有限公司",resultMap);
  203. break;
  204. case Commercial_HS://弘盛信息咨询有限公司
  205. List<String> md5ListHS = callBackMap.get(productBizId);
  206. log.info("开始处理机构id:{},弘盛信息咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListHS,md5ListHS.size());
  207. if (CollectionUtils.isEmpty(md5ListHS)) {
  208. return;
  209. }
  210. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  211. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"弘盛信息咨询有限公司",resultMap);
  212. break;
  213. case Commercial_JXJJG://4514江西聚金阁
  214. List<String> md5ListJXJJG = callBackMap.get(productBizId);
  215. log.info("开始处理机构id:{},江西聚金阁 当日订单数:{},条数:{}", productBizId,md5ListJXJJG,md5ListJXJJG.size());
  216. if (CollectionUtils.isEmpty(md5ListJXJJG)) {
  217. return;
  218. }
  219. sendGetRequestJXJJG(commercialCallBackReadyEnum.getCode(),
  220. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),md5ListJXJJG,resultMap);
  221. break;
  222. case Commercial_SZYC://苏州央创
  223. List<String> md5ListSZYC = callBackMap.get(productBizId);
  224. log.info("开始处理机构id:{},苏州央创 当日订单数:{},条数:{}", productBizId,md5ListSZYC,md5ListSZYC.size());
  225. if (CollectionUtils.isEmpty(md5ListSZYC)) {
  226. return;
  227. }
  228. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  229. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"苏州央创",resultMap);
  230. break;
  231. case Commercial_SXJLHJ2://陕西聚隆汇金(二店)
  232. List<String> md5ListSXJLHJ2 = callBackMap.get(productBizId);
  233. log.info("开始处理机构id:{},陕西聚隆汇金(二店) 当日订单数:{},条数:{}", productBizId,md5ListSXJLHJ2,md5ListSXJLHJ2.size());
  234. if (CollectionUtils.isEmpty(md5ListSXJLHJ2)) {
  235. return;
  236. }
  237. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  238. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"陕西聚隆汇金(二店)",resultMap);
  239. break;
  240. case Commercial_SXJLHJ://陕西聚隆汇金
  241. List<String> md5ListSXJLHJ = callBackMap.get(productBizId);
  242. log.info("开始处理机构id:{},陕西聚隆汇金 当日订单数:{},条数:{}", productBizId,md5ListSXJLHJ,md5ListSXJLHJ.size());
  243. if (CollectionUtils.isEmpty(md5ListSXJLHJ)) {
  244. return;
  245. }
  246. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  247. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"陕西聚隆汇金",resultMap);
  248. break;
  249. case Commercial_JXJL://嘉兴聚联
  250. List<String> md5ListJXJL = callBackMap.get(productBizId);
  251. log.info("开始处理机构id:{},嘉兴聚联 当日订单数:{},条数:{}", productBizId,md5ListJXJL,md5ListJXJL.size());
  252. if (CollectionUtils.isEmpty(md5ListJXJL)) {
  253. return;
  254. }
  255. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  256. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"嘉兴聚联",resultMap);
  257. break;
  258. case Commercial_JDPHAJ://广州金贷普惠按揭服务有限公司
  259. List<String> md5ListJDPHAJ = callBackMap.get(productBizId);
  260. log.info("开始处理机构id:{},广州金贷普惠按揭服务有限公司 当日订单数:{},条数:{}", productBizId,md5ListJDPHAJ,md5ListJDPHAJ.size());
  261. if (CollectionUtils.isEmpty(md5ListJDPHAJ)) {
  262. return;
  263. }
  264. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  265. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"广州金贷普惠按揭服务有限公司",resultMap);
  266. break;
  267. case Commercial_NXCX://宁夏簇鑫科技有限公司
  268. List<String> md5ListNXCX = callBackMap.get(productBizId);
  269. log.info("开始处理机构id:{},宁夏簇鑫科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListNXCX,md5ListNXCX.size());
  270. if (CollectionUtils.isEmpty(md5ListNXCX)) {
  271. return;
  272. }
  273. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  274. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"宁夏簇鑫科技有限公司",resultMap);
  275. break;
  276. case Commercial_CDHJT://成都汇锦通创商务信息咨询服务有限公司
  277. List<String> md5ListCDHJT = callBackMap.get(productBizId);
  278. log.info("开始处理机构id:{},成都汇锦通创商务信息咨询服务有限公司 当日订单数:{},条数:{}", productBizId,md5ListCDHJT,md5ListCDHJT.size());
  279. if (CollectionUtils.isEmpty(md5ListCDHJT)) {
  280. return;
  281. }
  282. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  283. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"成都汇锦通创商务信息咨询服务有限公司",resultMap);
  284. break;
  285. case Commercial_HBSY://湖北十堰华融信息咨询有限公司
  286. List<String> md5ListHBSY = callBackMap.get(productBizId);
  287. log.info("开始处理机构id:{},湖北十堰华融信息咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListHBSY,md5ListHBSY.size());
  288. if (CollectionUtils.isEmpty(md5ListHBSY)) {
  289. return;
  290. }
  291. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  292. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"湖北十堰华融信息咨询有限公司",resultMap);
  293. break;
  294. case Commercial_CD://成都蓉鑫诚商有限公司
  295. List<String> md5ListCD = callBackMap.get(productBizId);
  296. log.info("开始处理机构id:{},成都蓉鑫诚商有限公司 当日订单数:{},条数:{}", productBizId,md5ListCD,md5ListCD.size());
  297. if (CollectionUtils.isEmpty(md5ListCD)) {
  298. return;
  299. }
  300. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  301. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"成都蓉鑫诚商有限公司",resultMap);
  302. break;
  303. case Commercial_QT://齐泰圣鑫有限公司
  304. List<String> md5ListQt = callBackMap.get(productBizId);
  305. log.info("开始处理机构id:{},齐泰圣鑫有限公司 当日订单数:{},条数:{}", productBizId,md5ListQt,md5ListQt.size());
  306. if (CollectionUtils.isEmpty(md5ListQt)) {
  307. return;
  308. }
  309. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  310. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"齐泰圣鑫有限公司",resultMap);
  311. break;
  312. case Commercial_HZ:
  313. List<String> md5ListHz = callBackMap.get(productBizId);
  314. log.info("开始处理机构id:{},杭州聚壹融商务信息咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListHz,md5ListHz.size());
  315. if (CollectionUtils.isEmpty(md5ListHz)) {
  316. return;
  317. }
  318. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  319. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"杭州聚壹融商务信息咨询有限公司",resultMap);
  320. break;
  321. case Commercial_NBHX:
  322. List<String> md5ListNBHX = callBackMap.get(productBizId);
  323. log.info("开始处理机构id:{},宁波垣信信息科技有限公司 当日订单数:{},条数:{}", productBizId,md5ListNBHX,md5ListNBHX.size());
  324. if (CollectionUtils.isEmpty(md5ListNBHX)) {
  325. return;
  326. }
  327. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  328. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"宁波垣信信息科技有限公司",resultMap);
  329. break;
  330. case Commercial_BJQN:
  331. List<String> md5ListBJQN = callBackMap.get(productBizId);
  332. log.info("开始处理机构id:{},北京签牛企业管理咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListBJQN,md5ListBJQN.size());
  333. if (CollectionUtils.isEmpty(md5ListBJQN)) {
  334. return;
  335. }
  336. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  337. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),"北京签牛企业管理咨询有限公司",resultMap);
  338. break;
  339. case Commercial_FOSHAN:
  340. List<String> md5ListFS = callBackMap.get(productBizId);
  341. log.info("开始处理机构id:{},佛山市创智盈通企业管理有限公司 当日订单数:{},条数:{}", productBizId,md5ListFS,md5ListFS.size());
  342. if (CollectionUtils.isEmpty(md5ListFS)) {
  343. return;
  344. }
  345. sendGetRequestFoShan(commercialCallBackReadyEnum.getCode(),
  346. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(), md5ListFS,resultMap);
  347. break;
  348. // case Commercial_HLJJC:
  349. // List<String> md5ListHLJJC = callBackMap.get(productBizId);
  350. // log.info("开始处理机构id:{},黑龙江省景琛信息咨询有限公司 当日订单数:{},条数:{}", productBizId,md5ListHLJJC,md5ListHLJJC.size());
  351. // if (CollectionUtils.isEmpty(md5ListHLJJC)) {
  352. // return;
  353. // }
  354. // sendGetRequestHeiLongJiang(commercialCallBackReadyEnum.getCode(),
  355. // commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(), md5ListHLJJC);
  356. // break;
  357. case Commercial_CQYXJ:
  358. List<String> md5ListCQYXJ = callBackMap.get(productBizId);
  359. log.info("开始处理机构id:{},重庆优兴嘉 当日订单数:{},条数:{}", productBizId,md5ListCQYXJ,md5ListCQYXJ.size());
  360. if (CollectionUtils.isEmpty(md5ListCQYXJ)) {
  361. return;
  362. }
  363. sendGetRequestCQYXJ(commercialCallBackReadyEnum.getCode(),
  364. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),md5ListCQYXJ,"1D4C6329-399F-42CA-AC0C-236E0B048AD0",21540,resultMap);
  365. break;
  366. case Commercial_SXRKX:
  367. List<String> md5ListSXRKX = callBackMap.get(productBizId);
  368. log.info("开始处理机构id:{},山西瑞凯鑫 当日订单数:{},条数:{}", productBizId,md5ListSXRKX,md5ListSXRKX.size());
  369. if (CollectionUtils.isEmpty(md5ListSXRKX)) {
  370. return;
  371. }
  372. sendGetRequestSXRKX(commercialCallBackReadyEnum.getCode(),
  373. commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl(),resultMap);
  374. break;
  375. // case Commercial_XJZZ:
  376. // List<String> md5ListXJZZ = callBackMap.get(busiId);
  377. // log.info("开始处理机构id:{},当日订单数:{},条数:{}", busiId,md5ListXJZZ,md5ListXJZZ.size());
  378. // if (CollectionUtils.isEmpty(md5ListXJZZ)) {
  379. // return;
  380. // }
  381. // sendGetRequestSXRKX(commercialCallBackReadyEnum.getCode(),
  382. // commercialCallBackReadyEnum.getBusid(),commercialCallBackReadyEnum.getUrl());
  383. // break;
  384. case Commercial_CHONGQINGZC:
  385. List<String> md5ListCq = callBackMap.get(productBizId);
  386. log.info("开始处理机构id:{},重庆众诚 当日订单数:{},条数:{}", productBizId,md5ListCq,md5ListCq.size());
  387. if (CollectionUtils.isEmpty(md5ListCq)) {
  388. return;
  389. }
  390. String url = commercialCallBackReadyEnum.getUrl();
  391. String[] split = url.split(";");
  392. for (String urlTemp : split) {
  393. sendGetRequestHz(commercialCallBackReadyEnum.getCode(),
  394. commercialCallBackReadyEnum.getBusid(),urlTemp,"重庆众诚",resultMap);
  395. }
  396. break;
  397. // case Commercial_Test:
  398. // log.info("开始处理机构id:{}", busiId);
  399. // List<String> md5List2 = callBackMap.get(busiId);
  400. // if (CollectionUtils.isEmpty(md5List2)) {
  401. // return;
  402. // }
  403. // sendGetRequest(CommercialCallBackReadyEnum.Commercial_Test.getCode(),
  404. // CommercialCallBackReadyEnum.Commercial_Test.getBusid(),commercialCallBackReadyEnum.getUrl(),md5List2);
  405. // break;
  406. }
  407. }
  408. }
  409. }
  410. @Override
  411. public void thirdProcessInstitutionData(List<ThirdStarDto> thirdStarDtos) {
  412. if (CollectionUtils.isEmpty(thirdStarDtos)) {
  413. log.info("thirdStarDtos 解析回传数据为null");
  414. return;
  415. }
  416. Map<String, List<String>> groupedByBusiId = thirdStarDtos.stream()
  417. .collect(Collectors.groupingBy(
  418. ThirdStarDto::getProductBizId,
  419. Collectors.mapping(ThirdStarDto::getPhoneMd5, Collectors.toList())
  420. ));
  421. Map<String, List<String>> callBackMap = groupedByBusiId.entrySet().stream()
  422. .filter(entry -> CommercialCallBackReadyEnum.of(entry.getKey()) != null)
  423. .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
  424. log.info("已经对接third星级回传的机构id:{}", callBackMap.keySet());
  425. if (CollectionUtils.isEmpty(callBackMap.keySet())) {
  426. log.info("third 无需要处理的星级回传:{}", callBackMap.keySet());
  427. return;
  428. }
  429. for (String productBizId : callBackMap.keySet()) {
  430. CommercialCallBackReadyEnum commercialCallBackReadyEnum = CommercialCallBackReadyEnum.of(productBizId);
  431. if (commercialCallBackReadyEnum != null) {
  432. switch (commercialCallBackReadyEnum) {
  433. case Commercial_DAQN:
  434. if (CollectionUtils.isEmpty(thirdStarDtos)) {
  435. return;
  436. }
  437. sendDalian(commercialCallBackReadyEnum.getCode(),
  438. commercialCallBackReadyEnum.getBusid(),
  439. commercialCallBackReadyEnum.getUrl(),thirdStarDtos);
  440. break;
  441. case Commercial_HFYZF:
  442. if (CollectionUtils.isEmpty(thirdStarDtos)) {
  443. return;
  444. }
  445. sendHeFei(commercialCallBackReadyEnum.getCode(),
  446. commercialCallBackReadyEnum.getBusid(),
  447. commercialCallBackReadyEnum.getUrl(),thirdStarDtos);
  448. break;
  449. }
  450. }
  451. }
  452. }
  453. @Override
  454. public JSONObject kydrequest(JSONObject json) {
  455. List<CustomerFollowup> followupList = new ArrayList<>();
  456. CustomerFollowup followup = new CustomerFollowup();
  457. followup.setPhoneMd5(json.getString("phoneMd5"));
  458. String businessId = "389fb67410dc250414104756business";
  459. followup.setBusiId(businessId);
  460. followup.setProductBizId(4413);
  461. followup.setFollowTime(new Date());
  462. followup.setSourceType(3);
  463. String star = json.getString("star");
  464. if ("1".equals(star)) {
  465. followup.setStarLevel(new BigDecimal(0));
  466. } else if ("2".equals(star)) {
  467. followup.setStarLevel(new BigDecimal(1));
  468. }else if ("3".equals(star)) {
  469. followup.setStarLevel(new BigDecimal(2));
  470. }else if ("4".equals(star)) {
  471. followup.setStarLevel(new BigDecimal(3));
  472. }else if ("5".equals(star)) {
  473. followup.setStarLevel(new BigDecimal(4));
  474. }else if ("6".equals(star)) {
  475. followup.setStarLevel(new BigDecimal(5));
  476. }
  477. followupList.add(followup);
  478. handleMappedData(businessId,followupList);
  479. JSONObject jsonObject = new JSONObject();
  480. jsonObject.put("code",0);
  481. jsonObject.put("msg","成功");
  482. return jsonObject;
  483. }
  484. private void sendGetRequestSXRKX(String productBizId,String busiId,String url,Map<String, String> resultMap){
  485. JSONObject param = SignUtil.generateSign(81, 43, "730969D3F673BA42432C574378B9A8F1");
  486. log.info("busiId:{},:山西瑞凯鑫 url:{} ,jsonString:{}" ,busiId, url,param);
  487. String responseStr = HttpClientThreeUtil.post(url, JSON.toJSONString(param));
  488. JSONObject jsonObject = JSON.parseObject(responseStr);
  489. List<CustomerFollowup> followupList = new ArrayList<>();
  490. if (jsonObject.getIntValue("code") == 0) {
  491. JSONObject data = jsonObject.getJSONObject("data");
  492. JSONArray list = data.getJSONArray("list");
  493. if (CollectionUtils.isEmpty(list)) {
  494. log.info("busiId:{} 山西瑞凯鑫 list为空 没有星级数据", busiId);
  495. return;
  496. }
  497. String s = resultMap.get(busiId);
  498. JSONObject object = JSON.parseObject(s);
  499. for (int i = 0; i < list.size(); i++) {
  500. JSONObject item = list.getJSONObject(i);
  501. CustomerFollowup customerFollowup = new CustomerFollowup();
  502. customerFollowup.setBusiId(busiId);
  503. customerFollowup.setProductBizId(Integer.parseInt(productBizId));
  504. customerFollowup.setCustomerName(item.getString("name"));
  505. String stars = object.getString("stars");
  506. if (StringUtils.isEmpty(stars)) {
  507. log.info("busiId:{} companyName {}, mobile_md5{} 没有填星级:", busiId, "山西瑞凯鑫" ,customerFollowup.getPhoneMd5());
  508. continue;
  509. }else {
  510. if (StringUtils.isEmpty(s)){
  511. customerFollowup.setStarLevel(new BigDecimal(stars));
  512. }else {
  513. Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
  514. String level = starMap.get(stars);
  515. if (StringUtils.isEmpty(level)) {
  516. customerFollowup.setStarLevel(new BigDecimal(stars));
  517. }else{
  518. customerFollowup.setStarLevel(new BigDecimal(level));
  519. }
  520. }
  521. }
  522. // customerFollowup.setStarLevel(new BigDecimal(item.getIntValue("stars")));
  523. customerFollowup.setFollowStatus(item.getString("statusStr"));
  524. customerFollowup.setFollowRemark(item.getString("remark"));
  525. String mobile = item.getString("mobile");
  526. if (StringUtils.isEmpty(mobile)) {
  527. log.error("busiId:{} 山西瑞凯鑫 手机号为空",busiId);
  528. continue;
  529. }
  530. customerFollowup.setPhoneMd5(DigestUtils.md5Hex(mobile));
  531. customerFollowup.setFollowTime(new Date());
  532. followupList.add(customerFollowup);
  533. }
  534. }
  535. if (CollectionUtils.isEmpty(followupList)) {
  536. log.info("busiId:{} 山西瑞凯鑫 无星级数据", busiId);
  537. return;
  538. }
  539. log.info("busiId:{} 山西瑞凯鑫 处理数据条:{}", busiId, followupList.size());
  540. handleMappedData(busiId,followupList);
  541. }
  542. private void sendGetRequestCQYXJ(String productBizId,String busiId,String url,List<String> md5ListCQYXJ,String accessKey,Integer channelType,Map<String, String> resultMap){
  543. JSONObject jsonObject = new JSONObject();
  544. jsonObject.put("accessKey", accessKey);
  545. jsonObject.put("channelType", channelType);
  546. jsonObject.put("phoneMd5List", md5ListCQYXJ);
  547. String jsonString = JSON.toJSONString(jsonObject);
  548. log.info("busiId:{},:重庆优兴嘉 jsonString:{}" ,busiId, jsonString);
  549. String responseStr = HttpClientThreeUtil.post(url, jsonString);
  550. JSONObject response = JSON.parseObject(responseStr);
  551. String code = response.getString("code");
  552. if (!"200".equals(code)) {
  553. log.info("重庆优兴嘉 返回数据错误: " + response.getString("msg"));
  554. return ;
  555. }
  556. JSONArray dataArray = response.getJSONArray("data");
  557. List<CustomerFollowup> followupList = new ArrayList<>();
  558. if (CollectionUtils.isEmpty(dataArray)) {
  559. log.info("busiId:{},:重庆优兴嘉 今天没有星级数据",busiId);
  560. return;
  561. }
  562. String s = resultMap.get(busiId);
  563. JSONObject object = JSON.parseObject(s);
  564. for (int i = 0; i < dataArray.size(); i++) {
  565. JSONObject obj = dataArray.getJSONObject(i);
  566. CustomerFollowup followup = new CustomerFollowup();
  567. followup.setPhoneMd5(obj.getString("phoneMd5"));
  568. followup.setBusiId(busiId);
  569. followup.setProductBizId(Integer.parseInt(productBizId));
  570. followup.setFollowTime(new Date());
  571. followup.setSourceType(3);
  572. String star = obj.getString("grade");
  573. if (StringUtils.isEmpty(star)) {
  574. log.info("busiId:{} 重庆优兴嘉 mobile_md5{} 没有填星级:", busiId, followup.getPhoneMd5());
  575. continue;
  576. } else {
  577. if (StringUtils.isEmpty(s)){//没有配置映射
  578. if ("0".equals(star)) {
  579. followup.setStarLevel(new BigDecimal(0));
  580. } else if ("10".equals(star)) {
  581. followup.setStarLevel(new BigDecimal(1));
  582. }else if ("20".equals(star)) {
  583. followup.setStarLevel(new BigDecimal(2));
  584. }else if ("30".equals(star)) {
  585. followup.setStarLevel(new BigDecimal(3));
  586. }else if ("40".equals(star)) {
  587. followup.setStarLevel(new BigDecimal(4));
  588. }else if ("50".equals(star)) {
  589. followup.setStarLevel(new BigDecimal(5));
  590. }
  591. }else {
  592. //{ 客户 : 我方
  593. // "1星": "5星",
  594. // "2星": "4星",
  595. // "3星": "3星",
  596. // "4星": "2星",
  597. // "5星": "1星"
  598. //}
  599. Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
  600. String level = starMap.get(star);
  601. if (StringUtils.isEmpty(level)) {
  602. if ("0".equals(star)) {
  603. followup.setStarLevel(new BigDecimal(0));
  604. } else if ("10".equals(star)) {
  605. followup.setStarLevel(new BigDecimal(1));
  606. }else if ("20".equals(star)) {
  607. followup.setStarLevel(new BigDecimal(2));
  608. }else if ("30".equals(star)) {
  609. followup.setStarLevel(new BigDecimal(3));
  610. }else if ("40".equals(star)) {
  611. followup.setStarLevel(new BigDecimal(4));
  612. }else if ("50".equals(star)) {
  613. followup.setStarLevel(new BigDecimal(5));
  614. }
  615. }else {
  616. followup.setStarLevel(new BigDecimal(level));
  617. }
  618. }
  619. }
  620. followupList.add(followup);
  621. }
  622. if (CollectionUtils.isEmpty(followupList)) {
  623. log.info("busiId:{} 重庆优兴嘉 无星级数据", busiId);
  624. return;
  625. }
  626. log.info("busiId:{} 重庆优兴嘉 处理数据条:{}", busiId, followupList.size());
  627. handleMappedData(busiId,followupList);
  628. }
  629. private void sendGetRequestJXJJG(String productBizId,String busiId,String url,List<String> md5ListJXJJG,Map<String, String> resultMap){
  630. StringBuilder stringBuilder = new StringBuilder();
  631. Map<String, String> map = new HashMap<>();
  632. for (int i = 0; i < md5ListJXJJG.size(); i++) {
  633. stringBuilder.append(md5ListJXJJG.get(i));
  634. if (i < md5ListJXJJG.size() - 1) {
  635. stringBuilder.append(",");
  636. }
  637. }
  638. map.put("channel_code", "12");
  639. map.put("md5_phone_list", stringBuilder.toString());
  640. String jsonString = JSON.toJSONString(map);
  641. log.info("busiId:{},:江西聚金阁 jsonString:{}" ,busiId, jsonString);
  642. String responseStr = HttpClientThreeUtil.post(url, jsonString);
  643. JSONObject response = JSON.parseObject(responseStr);
  644. String code = response.getString("code");
  645. if (!"1".equals(code)) {
  646. log.info("江西聚金阁 返回数据错误: " + response.getString("msg"));
  647. return ;
  648. }
  649. JSONArray dataArray = response.getJSONArray("data");
  650. List<CustomerFollowup> followupList = new ArrayList<>();
  651. if (CollectionUtils.isEmpty(dataArray)) {
  652. log.info("busiId:{},:江西聚金阁 今天没有星级数据",busiId);
  653. return;
  654. }
  655. String s = resultMap.get(busiId);
  656. JSONObject jsonObject = JSON.parseObject(s);
  657. for (int i = 0; i < dataArray.size(); i++) {
  658. JSONObject obj = dataArray.getJSONObject(i);
  659. CustomerFollowup followup = new CustomerFollowup();
  660. followup.setPhoneMd5(obj.getString("phoneMd5"));
  661. followup.setBusiId(busiId);
  662. followup.setProductBizId(Integer.parseInt(productBizId));
  663. followup.setFollowTime(new Date());
  664. followup.setSourceType(3);
  665. String star = obj.getString("star");
  666. if (StringUtils.isEmpty(star)) {
  667. log.info("busiId:{} 江西聚金阁 mobile_md5{} 没有填星级:", busiId, followup.getPhoneMd5());
  668. continue;
  669. } else {
  670. if (StringUtils.isEmpty(s)){
  671. if ("0".equals(star)) {
  672. followup.setStarLevel(new BigDecimal(0));
  673. } else if ("1".equals(star)) {
  674. followup.setStarLevel(new BigDecimal(1));
  675. }else if ("2".equals(star) || "3".equals(star)) {
  676. followup.setStarLevel(new BigDecimal(2));
  677. }else if ("4".equals(star)) {
  678. followup.setStarLevel(new BigDecimal(3));
  679. }else if ("5".equals(star)) {
  680. followup.setStarLevel(new BigDecimal(4));
  681. }else if ("6".equals(star)) {
  682. followup.setStarLevel(new BigDecimal(5));
  683. }
  684. }else {
  685. Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
  686. String level = starMap.get(star);
  687. if (StringUtils.isEmpty(level)) {
  688. if ("0".equals(star)) {
  689. followup.setStarLevel(new BigDecimal(0));
  690. } else if ("1".equals(star)) {
  691. followup.setStarLevel(new BigDecimal(1));
  692. }else if ("2".equals(star) || "3".equals(star)) {
  693. followup.setStarLevel(new BigDecimal(2));
  694. }else if ("4".equals(star)) {
  695. followup.setStarLevel(new BigDecimal(3));
  696. }else if ("5".equals(star)) {
  697. followup.setStarLevel(new BigDecimal(4));
  698. }else if ("6".equals(star)) {
  699. followup.setStarLevel(new BigDecimal(5));
  700. }
  701. }else {
  702. followup.setStarLevel(new BigDecimal(level));
  703. }
  704. }
  705. }
  706. followupList.add(followup);
  707. }
  708. if (CollectionUtils.isEmpty(followupList)) {
  709. log.info("busiId:{} 江西聚金阁 无星级数据", busiId);
  710. return;
  711. }
  712. log.info("busiId:{} 江西聚金阁 处理数据条:{}", busiId, followupList.size());
  713. handleMappedData(busiId,followupList);
  714. }
  715. private void sendGetRequestFoShan(String productBizId,String busiId,String url,List<String> md5ListFS,Map<String, String> resultMap){
  716. List<Map<String, String>> jsonList = new ArrayList<>();
  717. for (String md5 : md5ListFS) {
  718. Map<String, String> map = new HashMap<>();
  719. map.put("source", "hr");
  720. map.put("mobile_md5", md5);
  721. jsonList.add(map);
  722. }
  723. String jsonString = JSON.toJSONString(jsonList);
  724. log.info("busiId:{},:佛山市创智盈通企业管理有限公司 jsonString:{}" ,busiId, jsonString);
  725. String responseStr = HttpClientThreeUtil.post(url, jsonString);
  726. JSONObject response = JSON.parseObject(responseStr);
  727. String code = response.getString("code");
  728. if (!"200".equals(code)) {
  729. log.info("佛山市创智盈通企业管理有限公司 返回数据错误: " + response.getString("msg"));
  730. return ;
  731. }
  732. JSONArray dataArray = response.getJSONArray("data");
  733. List<CustomerFollowup> followupList = new ArrayList<>();
  734. if (CollectionUtils.isEmpty(dataArray)) {
  735. log.info("busiId:{},:佛山市创智盈通企业管理有限公司 今天没有星级数据",busiId);
  736. return;
  737. }
  738. String s = resultMap.get(busiId);
  739. JSONObject jsonObject = JSON.parseObject(s);
  740. for (int i = 0; i < dataArray.size(); i++) {
  741. JSONObject obj = dataArray.getJSONObject(i);
  742. CustomerFollowup followup = new CustomerFollowup();
  743. followup.setPhoneMd5(obj.getString("mobile_md5"));
  744. followup.setBusiId(busiId);
  745. followup.setProductBizId(Integer.parseInt(productBizId));
  746. followup.setFollowTime(new Date());
  747. followup.setSourceType(3);
  748. String star = obj.getString("industry");
  749. if (StringUtils.isEmpty(star)) {
  750. log.info("busiId:{} 佛山创智盈通企业管理有限公司 mobile_md5{} 没有填星级:", busiId, followup.getPhoneMd5());
  751. continue;
  752. } else {
  753. if (StringUtils.isEmpty(s)){
  754. if ("0星".equals(star)) {
  755. followup.setStarLevel(new BigDecimal(0));
  756. } else if ("1星".equals(star)) {
  757. followup.setStarLevel(new BigDecimal(1));
  758. }else if ("2星".equals(star)) {
  759. followup.setStarLevel(new BigDecimal(2));
  760. }else if ("3星".equals(star)) {
  761. followup.setStarLevel(new BigDecimal(3));
  762. }else if ("4星".equals(star)) {
  763. followup.setStarLevel(new BigDecimal(4));
  764. }else if ("5星".equals(star)) {
  765. followup.setStarLevel(new BigDecimal(5));
  766. }
  767. }else {
  768. Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
  769. String level = starMap.get(star);
  770. if (StringUtils.isEmpty(level)) {
  771. if ("0星".equals(star)) {
  772. followup.setStarLevel(new BigDecimal(0));
  773. } else if ("1星".equals(star)) {
  774. followup.setStarLevel(new BigDecimal(1));
  775. }else if ("2星".equals(star)) {
  776. followup.setStarLevel(new BigDecimal(2));
  777. }else if ("3星".equals(star)) {
  778. followup.setStarLevel(new BigDecimal(3));
  779. }else if ("4星".equals(star)) {
  780. followup.setStarLevel(new BigDecimal(4));
  781. }else if ("5星".equals(star)) {
  782. followup.setStarLevel(new BigDecimal(5));
  783. }
  784. }else {
  785. followup.setStarLevel(new BigDecimal(level));
  786. }
  787. }
  788. }
  789. followupList.add(followup);
  790. }
  791. if (CollectionUtils.isEmpty(followupList)) {
  792. log.info("busiId:{} 佛山创智盈通企业管理有限公司 无星级数据", busiId);
  793. return;
  794. }
  795. log.info("busiId:{} 佛山创智盈通企业管理有限公司 处理数据条:{}", busiId, followupList.size());
  796. handleMappedData(busiId,followupList);
  797. }
  798. // public void sendGetRequestHeiLongJiang(String productBizId, String busiId, String url, List<String> md5ListHLJJC){
  799. // List<Map<String, String>> jsonList = new ArrayList<>();
  800. // for (String md5 : md5ListHLJJC) {
  801. // Map<String, String> map = new HashMap<>();
  802. // map.put("source", "迅速邦");
  803. // map.put("mobile_md5", md5);
  804. // jsonList.add(map);
  805. // }
  806. // String jsonString = JSON.toJSONString(jsonList);
  807. // log.info("busiId:{},:黑龙江省景琛信息咨询有限公司 jsonString:{}" ,busiId, jsonString);
  808. //
  809. // String responseStr = HttpClientThreeUtil.post(url, jsonString);
  810. // JSONObject response = JSON.parseObject(responseStr);
  811. // String code = response.getString("code");
  812. // if (!"200".equals(code)) {
  813. // log.info("黑龙江省景琛信息咨询有限公司 返回数据错误: " + response.getString("msg"));
  814. // return ;
  815. // }
  816. // JSONArray dataArray = response.getJSONArray("data");
  817. // List<CustomerFollowup> followupList = new ArrayList<>();
  818. // if (CollectionUtils.isEmpty(dataArray)) {
  819. // log.info("busiId:{},:黑龙江省景琛信息咨询有限公司 今天没有星级数据",busiId);
  820. // return;
  821. // }
  822. //
  823. // for (int i = 0; i < dataArray.size(); i++) {
  824. // JSONObject obj = dataArray.getJSONObject(i);
  825. // CustomerFollowup followup = new CustomerFollowup();
  826. // followup.setPhoneMd5(obj.getString("mobile_md5"));
  827. // followup.setBusiId(busiId);
  828. // followup.setProductBizId(Integer.parseInt(productBizId));
  829. // followup.setFollowTime(new Date());
  830. // followup.setSourceType(3);
  831. // String star = obj.getString("industry");
  832. // if (StringUtils.isEmpty(star)) {
  833. // log.info("busiId:{} 黑龙江省景琛信息咨询有限公司 mobile_md5{} 没有填星级:", busiId, followup.getPhoneMd5());
  834. // continue;
  835. // } else {
  836. // if ("1星".equals(star)) {
  837. // followup.setStarLevel(new BigDecimal(1));
  838. // }else if ("2星".equals(star)) {
  839. // followup.setStarLevel(new BigDecimal(2));
  840. // }else if ("3星".equals(star)) {
  841. // followup.setStarLevel(new BigDecimal(3));
  842. // }else if ("4星".equals(star)) {
  843. // followup.setStarLevel(new BigDecimal(4));
  844. // }else if ("5星".equals(star)) {
  845. // followup.setStarLevel(new BigDecimal(5));
  846. // }
  847. // }
  848. // followupList.add(followup);
  849. // }
  850. //
  851. // if (CollectionUtils.isEmpty(followupList)) {
  852. // log.info("busiId:{} 黑龙江省景琛信息咨询有限公司 无星级数据", busiId);
  853. // return;
  854. // }
  855. // log.info("黑龙江省景琛信息咨询有限公司:{}", followupList);
  856. // log.info("busiId:{} 黑龙江省景琛信息咨询有限公司 处理数据条:{}", busiId, followupList.size());
  857. // handleMappedData(busiId,followupList);
  858. //
  859. // }
  860. //融享客通用
  861. private void sendGetRequestGZWA(String productBizId,String busiId,String url,String channelType,String accessKey,String companyName,List<String> md5ListGZWA,Map<String, String> resultMap){
  862. JSONObject object = new JSONObject();
  863. object.put("accessKey",accessKey);
  864. object.put("channelType", channelType);
  865. object.put("phoneMd5List", md5ListGZWA);
  866. String jsonString = JSON.toJSONString(object);
  867. log.info("星级回传请求参数{}:{}",companyName,jsonString);
  868. String responseStr = HttpClientThreeUtil.post(url, jsonString);
  869. JSONObject response = JSON.parseObject(responseStr);
  870. if (StringUtils.isEmpty(responseStr)) {
  871. log.error("busiId:{},companyName:{} 星级回传响应为空", busiId, companyName);
  872. return;
  873. }
  874. log.info("星级回传返回参数{}:{}",companyName,response);
  875. String code = response.getString("code");
  876. if (!"200".equals(code)) {
  877. log.info("busiId:{},companyName {},24h返回数据错误: {},{}" ,busiId,companyName,
  878. response.getString("msg"),response.getString("code"));
  879. return;
  880. }
  881. JSONArray dataArray = response.getJSONArray("data");
  882. List<CustomerFollowup> followupList = new ArrayList<>();
  883. String s = resultMap.get(busiId);
  884. JSONObject jsonObject = JSON.parseObject(s);
  885. // 遍历 data 数组,创建实体对象并设置对应字段
  886. for (int i = 0; i < dataArray.size(); i++) {
  887. JSONObject obj = dataArray.getJSONObject(i);
  888. CustomerFollowup followup = new CustomerFollowup();
  889. followup.setBusiId(busiId);
  890. followup.setProductBizId(Integer.parseInt(productBizId));
  891. followup.setPhoneMd5(obj.getString("phoneMd5"));
  892. String star = obj.getString("grade");
  893. if (StringUtils.isEmpty(star)) {
  894. log.info("busiId:{} companyName {}, mobile_md5{} 没有填星级:", busiId, companyName ,followup.getPhoneMd5());
  895. continue;
  896. } else {
  897. if (StringUtils.isEmpty(s)){//没有配置映射
  898. if ("0".equals(star)) {
  899. followup.setStarLevel(new BigDecimal(0));
  900. } else if ("10".equals(star)) {
  901. followup.setStarLevel(new BigDecimal(1));
  902. }else if ("20".equals(star)) {
  903. followup.setStarLevel(new BigDecimal(2));
  904. }else if ("30".equals(star)) {
  905. followup.setStarLevel(new BigDecimal(3));
  906. }else if ("40".equals(star)) {
  907. followup.setStarLevel(new BigDecimal(4));
  908. }else if ("50".equals(star)) {
  909. followup.setStarLevel(new BigDecimal(5));
  910. }
  911. }else {
  912. //{ 客户 : 我方
  913. // "1星": "5星",
  914. // "2星": "4星",
  915. // "3星": "3星",
  916. // "4星": "2星",
  917. // "5星": "1星"
  918. //}
  919. Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
  920. String level = starMap.get(star);
  921. if (StringUtils.isEmpty(level)) {
  922. if ("0".equals(star)) {
  923. followup.setStarLevel(new BigDecimal(0));
  924. } else if ("10".equals(star)) {
  925. followup.setStarLevel(new BigDecimal(1));
  926. }else if ("20".equals(star)) {
  927. followup.setStarLevel(new BigDecimal(2));
  928. }else if ("30".equals(star)) {
  929. followup.setStarLevel(new BigDecimal(3));
  930. }else if ("40".equals(star)) {
  931. followup.setStarLevel(new BigDecimal(4));
  932. }else if ("50".equals(star)) {
  933. followup.setStarLevel(new BigDecimal(5));
  934. }
  935. }else {
  936. followup.setStarLevel(new BigDecimal(level));
  937. }
  938. }
  939. }
  940. followup.setSourceType(3);
  941. followup.setFollowTime(new Date());
  942. followupList.add(followup);
  943. }
  944. if (CollectionUtils.isEmpty(followupList)) {
  945. log.info("busiId:{} companyName:{},没有24h星级数据", busiId,companyName);
  946. return;
  947. }
  948. log.info("busiId:{} companyName:{} 处理数据条:{}", busiId, companyName,followupList.size());
  949. handleMappedData(busiId,followupList);
  950. }
  951. //https://api.zhudaicms.com/ 通用
  952. private void sendGetRequestHz(String productBizId,String busiId,String url,String companyName,Map<String, String> resultMap){
  953. String responseStr = HttpClientThreeUtil.get(url,null);
  954. JSONObject response = JSON.parseObject(responseStr);
  955. String code = response.getString("code");
  956. if (!"101".equals(code)) {
  957. log.info("busiId:{},companyName {},24h返回数据错误: {},{}" ,busiId,companyName,
  958. response.getString("msg"),response.getString("code"));
  959. return;
  960. }
  961. JSONArray dataArray = response.getJSONArray("data");
  962. List<CustomerFollowup> followupList = new ArrayList<>();
  963. String s = resultMap.get(busiId);
  964. JSONObject jsonObject = JSON.parseObject(s);
  965. // 遍历 data 数组,创建实体对象并设置对应字段
  966. for (int i = 0; i < dataArray.size(); i++) {
  967. JSONObject obj = dataArray.getJSONObject(i);
  968. CustomerFollowup followup = new CustomerFollowup();
  969. followup.setBusiId(busiId);
  970. followup.setProductBizId(Integer.parseInt(productBizId));
  971. followup.setPhoneMd5(obj.getString("md5mobile"));
  972. String stars = obj.getString("stars");
  973. if (StringUtils.isEmpty(stars)) {
  974. log.info("busiId:{} companyName {}, mobile_md5{} 没有填星级:", busiId, companyName ,followup.getPhoneMd5());
  975. continue;
  976. }else {
  977. if (StringUtils.isEmpty(s)){
  978. followup.setStarLevel(new BigDecimal(stars));
  979. }else {
  980. Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
  981. String level = starMap.get(stars);
  982. if (StringUtils.isEmpty(level)) {
  983. followup.setStarLevel(new BigDecimal(stars));
  984. }else {
  985. followup.setStarLevel(new BigDecimal(level));
  986. }
  987. }
  988. }
  989. followup.setSourceType(3);
  990. followup.setFollowTime(new Date());
  991. followupList.add(followup);
  992. }
  993. if (CollectionUtils.isEmpty(followupList)) {
  994. log.info("busiId:{} companyName:{},没有24h星级数据", busiId,companyName);
  995. return;
  996. }
  997. log.info("busiId:{} companyName:{} 处理数据条:{}", busiId, companyName,followupList.size());
  998. handleMappedData(busiId,followupList);
  999. }
  1000. private void sendDalian(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos){
  1001. if (CollectionUtils.isEmpty(thirdStarDtos)) {
  1002. return;
  1003. }
  1004. List<CustomerFollowup> list = new ArrayList<>();
  1005. Map<String, String> map = new HashMap();
  1006. JSONObject response = null;
  1007. String joined = thirdStarDtos.stream()
  1008. .map(ThirdStarDto::getUniqueIdentify)
  1009. .collect(Collectors.joining(","));
  1010. map.put("app_id", "18");
  1011. map.put("timestamp", String.valueOf(System.currentTimeMillis()/1000));
  1012. map.put("unique_id", joined);
  1013. String sign = makeSign(map, "0xUGDHmMeiCYU7yyVgvSCeTMCillkDLZ");
  1014. map.put("sign", sign);
  1015. log.info("【大连青宁】请求前参数:{}",map);
  1016. String responseStr = HttpClientThreeUtil.post(url, JSON.toJSONString(map));
  1017. response = JSON.parseObject(responseStr);
  1018. log.info("【大连青宁】响应数据:{}",response);
  1019. if (response.getInteger("code") == 200) {
  1020. JSONArray data = response.getJSONArray("data");
  1021. Map<String, ThirdStarDto> dtoMap = thirdStarDtos.stream()
  1022. .collect(Collectors.toMap(ThirdStarDto::getUniqueIdentify, Function.identity(), (a, b) -> a));
  1023. for (int i = 0; i < data.size(); i++) {
  1024. JSONObject obj = data.getJSONObject(i);
  1025. String uniqueId = obj.getString("unique_id");
  1026. Integer star = obj.getInteger("star");
  1027. ThirdStarDto dto = dtoMap.get(uniqueId);
  1028. if (dto != null) {
  1029. CustomerFollowup followup = new CustomerFollowup();
  1030. followup.setStarLevel(new BigDecimal(star));
  1031. followup.setPhoneMd5(dto.getPhoneMd5());
  1032. followup.setBusiId(busiId);
  1033. followup.setProductBizId(Integer.parseInt(productBizId));
  1034. followup.setFollowTime(new Date());
  1035. followup.setSourceType(3);
  1036. list.add(followup);
  1037. } else {
  1038. log.warn("未匹配到 unique_id={} 对应的 ThirdStarDto", uniqueId);
  1039. }
  1040. }
  1041. }
  1042. log.info("busiId:{} 处理数据条:{}", busiId, list.size());
  1043. handleMappedData(busiId,list);
  1044. }
  1045. private void sendHeFei(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos){
  1046. if (CollectionUtils.isEmpty(thirdStarDtos)) {
  1047. return;
  1048. }
  1049. List<CustomerFollowup> list = new ArrayList<>();
  1050. Map<String, String> map = new HashMap();
  1051. JSONObject response = null;
  1052. String joined = thirdStarDtos.stream()
  1053. .map(ThirdStarDto::getUniqueIdentify)
  1054. .collect(Collectors.joining(","));
  1055. map.put("app_id", "80");
  1056. map.put("timestamp", String.valueOf(System.currentTimeMillis()/1000));
  1057. map.put("unique_id", joined);
  1058. String sign = makeSign(map, "38b1924a86ca479c842953ff59f724be");
  1059. map.put("sign", sign);
  1060. log.info("【合肥裕之丰】请求前参数:{}",map);
  1061. String responseStr = HttpClientThreeUtil.post(url, JSON.toJSONString(map));
  1062. response = JSON.parseObject(responseStr);
  1063. log.info("【合肥裕之丰】响应数据:{}",response);
  1064. if (response.getInteger("code") == 200) {
  1065. JSONArray data = response.getJSONArray("data");
  1066. Map<String, ThirdStarDto> dtoMap = thirdStarDtos.stream()
  1067. .collect(Collectors.toMap(ThirdStarDto::getUniqueIdentify, Function.identity(), (a, b) -> a));
  1068. for (int i = 0; i < data.size(); i++) {
  1069. JSONObject obj = data.getJSONObject(i);
  1070. String uniqueId = obj.getString("unique_id");
  1071. Integer star = obj.getInteger("star");
  1072. ThirdStarDto dto = dtoMap.get(uniqueId);
  1073. if (dto != null) {
  1074. CustomerFollowup followup = new CustomerFollowup();
  1075. followup.setStarLevel(new BigDecimal(star));
  1076. followup.setPhoneMd5(dto.getPhoneMd5());
  1077. followup.setBusiId(busiId);
  1078. followup.setProductBizId(Integer.parseInt(productBizId));
  1079. followup.setFollowTime(new Date());
  1080. followup.setSourceType(3);
  1081. list.add(followup);
  1082. } else {
  1083. log.warn("未匹配到 unique_id={} 对应的 ThirdStarDto", uniqueId);
  1084. }
  1085. }
  1086. }
  1087. log.info("busiId:{} 处理数据条:{}", busiId, list.size());
  1088. handleMappedData(busiId,list);
  1089. }
  1090. public static void main(String[] args) {
  1091. Map<String, String> map = new HashMap();
  1092. map.put("app_id", "45");
  1093. map.put("timestamp", String.valueOf(System.currentTimeMillis()/1000));
  1094. map.put("unique_id", "hryk1744092978");
  1095. String sign = makeSign(map, "THITVXdSPQRQzArVwtssyD4uMdQIUxEY");
  1096. map.put("sign", sign);
  1097. System.out.println(map);
  1098. }
  1099. public static String makeSign(Map<String, String> args, String token) {
  1100. if (args == null || token == null) {
  1101. return "";
  1102. }
  1103. Map<String, String> sortedArgs = new TreeMap<>(args);
  1104. StringBuilder signStr = new StringBuilder();
  1105. for (Map.Entry<String, String> entry : sortedArgs.entrySet()) {
  1106. String key = entry.getKey();
  1107. String value = entry.getValue();
  1108. if (value != null && !value.isEmpty()) {
  1109. signStr.append(key).append(value);
  1110. }
  1111. }
  1112. System.out.println(signStr.toString());
  1113. return md5(md5(signStr.toString()) + token).toUpperCase();
  1114. }
  1115. private static String md5(String str) {
  1116. try {
  1117. MessageDigest md = MessageDigest.getInstance("MD5");
  1118. md.update(str.getBytes());
  1119. byte[] digest = md.digest();
  1120. StringBuilder sb = new StringBuilder();
  1121. for (byte b : digest) {
  1122. sb.append(String.format("%02x", b & 0xff));
  1123. }
  1124. return sb.toString();
  1125. } catch (NoSuchAlgorithmException e) {
  1126. e.printStackTrace();
  1127. return "";
  1128. }
  1129. }
  1130. private void sendGetRequest(String productBizId,String busiId,String url,List<String> md5s){
  1131. List<CustomerFollowup> list = new ArrayList<>();
  1132. JSONObject map = new JSONObject();
  1133. JSONObject response = null;
  1134. for (String md5 : md5s) {
  1135. map.put("customer_phone", md5);
  1136. map.put("customer_source", "LCD-HX");
  1137. String responseStr = HttpClientThreeUtil.post(url, map.toJSONString());
  1138. response = JSON.parseObject(responseStr);
  1139. if (response.getInteger("code") == 1) {
  1140. JSONObject data = response.getJSONObject("data");
  1141. CustomerFollowup param = new CustomerFollowup();
  1142. JSONArray logList = data.getJSONArray("log_list");
  1143. if (CollectionUtils.isNotEmpty(logList)) {
  1144. StringBuilder result = new StringBuilder();
  1145. for (int i = 0; i < logList.size(); i++) {
  1146. JSONObject logEntry = logList.getJSONObject(i);
  1147. String logTime = logEntry.getString("log_time");
  1148. String content = logEntry.getString("content");
  1149. result.append(logTime).append("-").append(content);
  1150. if (i < logList.size() - 1) {
  1151. result.append(";");
  1152. }
  1153. }
  1154. param.setFollowRemark(result.toString());
  1155. }
  1156. param.setPhoneMd5(md5);
  1157. param.setStarLevel(data.getBigDecimal("customer_starlevel"));
  1158. param.setProductBizId(Integer.parseInt(productBizId));
  1159. param.setBusiId(busiId);
  1160. param.setSourceType(3);
  1161. list.add(param);
  1162. } else {
  1163. log.warn("url:{} ,productBizId:{},md5:{} 获取结果失败",url,productBizId,md5);
  1164. }
  1165. }
  1166. log.info("busiId:{} 处理数据条:{}", busiId, list.size());
  1167. handleMappedData(busiId,list);
  1168. }
  1169. private void handleMappedData(String busiId,List<CustomerFollowup> data) {
  1170. log.info("busiId:{} 【CasllBackDataProcessor】成功处理 {} 条映射数据 明细:{}",busiId, data.size(), data);
  1171. String post = HttpClientThreeUtil.post(url, JSON.toJSONString(data));
  1172. log.info("busiId:{}【CasllBackDataProcessor】post结果:{}",busiId, post);
  1173. }
  1174. }