MerchantServiceImpl.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. package com.poteviohealth.ym.ipos.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.TypeReference;
  5. import com.poteviohealth.cgp.common.facade.cache.CacheService;
  6. import com.poteviohealth.cgp.common.filter.TokenContext;
  7. import com.poteviohealth.cgp.common.integrated.EntityIdParams;
  8. import com.poteviohealth.cgp.common.integrated.OperatorIdParams;
  9. import com.poteviohealth.cgp.common.integrated.customer.CustomerFeignClient;
  10. import com.poteviohealth.cgp.common.integrated.partner.PartnerFeignClient;
  11. import com.poteviohealth.cgp.common.integrated.partner.model.OperatorDTO;
  12. import com.poteviohealth.cgp.common.model.VaultsResponse;
  13. import com.poteviohealth.ym.ipos.common.Basic;
  14. import com.poteviohealth.ym.ipos.model.BasicConfiguration;
  15. import com.poteviohealth.ym.ipos.model.back.BaseBack;
  16. import com.poteviohealth.ym.ipos.model.merchant.*;
  17. import com.poteviohealth.ym.ipos.model.merchant.back.ImageListBack;
  18. import com.poteviohealth.ym.ipos.model.merchant.back.PictureBack;
  19. import com.poteviohealth.ym.ipos.model.merchant.back.UserBack;
  20. import com.poteviohealth.ym.ipos.model.merchant.back.UserSearchBack;
  21. import com.poteviohealth.ym.ipos.model.merchant.detail.*;
  22. import com.poteviohealth.ym.ipos.model.merchant.dto.ImageDto;
  23. import com.poteviohealth.ym.ipos.model.merchant.dto.ImageListDto;
  24. import com.poteviohealth.ym.ipos.model.merchant.dto.SearchDto;
  25. import com.poteviohealth.ym.ipos.model.merchant.dto.UserDto;
  26. import com.poteviohealth.ym.ipos.model.payment.dto.BindDto;
  27. import com.poteviohealth.ym.ipos.service.IAreaService;
  28. import com.poteviohealth.ym.ipos.service.IMerchantService;
  29. import com.poteviohealth.ym.ipos.service.IPaymentService;
  30. import com.poteviohealth.ym.ipos.utils.YmUtil;
  31. import lombok.extern.log4j.Log4j2;
  32. import org.apache.commons.lang3.StringUtils;
  33. import org.springframework.stereotype.Service;
  34. import javax.annotation.Resource;
  35. import java.math.BigDecimal;
  36. import java.util.List;
  37. import java.util.stream.Collectors;
  38. /**
  39. * 商户入驻接口实现
  40. * @author Qin
  41. */
  42. @Service
  43. @Log4j2
  44. public class MerchantServiceImpl implements IMerchantService {
  45. @Resource
  46. private PartnerFeignClient partnerFeignClient;
  47. @Resource
  48. private CustomerFeignClient customerFeignClient;
  49. @Resource
  50. private IAreaService areaService;
  51. @Resource
  52. private IPaymentService paymentService;
  53. @Resource
  54. private CacheService cacheService;
  55. /**
  56. * 上传图片
  57. * @param dto
  58. * @return
  59. */
  60. @Override
  61. public VaultsResponse<String> merchantPicture(ImageDto dto){
  62. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  63. Picture p = new Picture();
  64. p.setSystem_id(bc.getSystemId());
  65. p.setIsspid(bc.getPid());
  66. PictureDetail detail = new PictureDetail();
  67. detail.setType(dto.getType());
  68. detail.setImage_name(dto.getName());
  69. detail.setImage_content(dto.getBase64Str());
  70. p.setMerchant_picture_request(detail);
  71. PictureBack back = null;
  72. try {
  73. back = (PictureBack) YmUtil.resultBack(p,new PictureBack());
  74. } catch (IllegalAccessException e) {
  75. e.printStackTrace();
  76. return VaultsResponse.failed(e.getMessage());
  77. }
  78. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  79. return VaultsResponse.success(back.getId());
  80. }
  81. return VaultsResponse.failed(back.getResult().getComment());
  82. }
  83. /**
  84. * 商户新增/修改开户入驻
  85. * @param dto
  86. * @return
  87. */
  88. @Override
  89. public VaultsResponse merchantCreateOpen(UserDto dto) {
  90. BasicConfiguration basicConfig = Basic.getSystemParameter(TokenContext.cureOperatorId());
  91. dto.setRemained_amt(dto.getRemained_amt()*100);
  92. VaultsResponse<UserSearchBack> vaultsResponse = this.merchantQuery(dto.getPhone(),null);
  93. if(!vaultsResponse.validate()){
  94. log.info("UserSearchBack==="+vaultsResponse);
  95. return vaultsResponse;
  96. }
  97. UserSearchBack searchBack = vaultsResponse.getData();
  98. Integer status = 0;
  99. if(searchBack != null){
  100. status = Integer.parseInt(searchBack.getIncoming_status());
  101. }
  102. if(StringUtils.isEmpty(dto.getIncoming_status())){
  103. dto.setIncoming_status(status.toString());
  104. }
  105. if(StringUtils.isEmpty(dto.getMerchant_id())){
  106. if(searchBack != null){
  107. dto.setMerchant_id(searchBack.getMerchant_id());
  108. //return VaultsResponse.failed("手机号码已被注册");
  109. }
  110. //添加商户
  111. VaultsResponse<String> createVault = this.merchantCreate(dto);
  112. if(!createVault.validate()){
  113. log.info("createVault==="+createVault);
  114. return createVault;
  115. }
  116. dto.setMerchant_id(createVault.getData());
  117. }else{
  118. if(searchBack != null && !searchBack.getMerchant_id().equals(dto.getMerchant_id())){
  119. return VaultsResponse.failed("手机号码已被注册");
  120. }
  121. }
  122. if(dto.getIncoming_status().equals("2")){
  123. //修改开户/入驻信息
  124. VaultsResponse<String> indvmodifyVault = this.modifyVault(dto);
  125. if(!indvmodifyVault.validate()){
  126. log.info("indvmodifyVault==="+indvmodifyVault);
  127. return indvmodifyVault;
  128. }
  129. VaultsResponse<String> openModifyVault = this.merchantOpenModify(dto);
  130. VaultsResponse<String> stringVault = updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),2,dto.getRemained_amt(),basicConfig.getCode(),dto.getProportion());
  131. if(!stringVault.validate()){
  132. log.info("stringVault==="+stringVault);
  133. return stringVault;
  134. }
  135. if(dto.getSourceId().equals(1)){
  136. BindDto bd = new BindDto();
  137. bd.setAppId(stringVault.getData());
  138. bd.setPosId(basicConfig.getCode());
  139. bd.setStoreId(dto.getId().toString());
  140. bd.setName("("+basicConfig.getCode()+")"+dto.getMerchant_short_name());
  141. //修改门店信息
  142. if(!dto.getMerchant_short_name().equals(searchBack.getBase_merchant_short_name())){
  143. VaultsResponse changeVr = paymentService.changeBindPos(bd);
  144. if(!changeVr.validate()){
  145. return changeVr;
  146. }
  147. }
  148. //终端绑定交易
  149. return paymentService.bindPos(bd);
  150. }
  151. log.info("openModifyVault==="+openModifyVault);
  152. return openModifyVault;
  153. }else{
  154. if(dto.getIncoming_status().equals("0") || dto.getIncoming_status().equals("-1")){
  155. //未开户或开户失败时
  156. if(dto.getType().equals("3")){
  157. //个人
  158. VaultsResponse<String> indvregisterVault = this.merchantIndvregister(dto);
  159. if(!indvregisterVault.validate()){
  160. log.info("indvregisterVault==="+indvregisterVault);
  161. return indvregisterVault;
  162. }
  163. }else{
  164. //商户
  165. VaultsResponse<String> entregisterVault = this.merchantEntregister(dto);
  166. if(!entregisterVault.validate()){
  167. log.info("entregisterVault==="+entregisterVault);
  168. return entregisterVault;
  169. }
  170. }
  171. updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),3,dto.getRemained_amt(),basicConfig.getCode(),dto.getProportion());
  172. }else{
  173. VaultsResponse<String> indvmodifyVault = this.modifyVault(dto);
  174. if(!indvmodifyVault.validate()){
  175. log.info("indvmodifyVault==="+indvmodifyVault);
  176. return indvmodifyVault;
  177. }
  178. }
  179. //入驻
  180. VaultsResponse<String> openVault = this.merchantOpen(dto);
  181. if(!openVault.validate()){
  182. log.info("openVault==="+openVault);
  183. return openVault;
  184. }
  185. // if(status != 2){
  186. VaultsResponse<String> stringVault = updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),2,dto.getRemained_amt(),basicConfig.getCode(),dto.getProportion());
  187. if(!stringVault.validate()){
  188. log.info("stringVault==="+stringVault);
  189. return stringVault;
  190. }
  191. if(dto.getSourceId().equals(1)){
  192. //终端绑定交易
  193. BindDto bd = new BindDto();
  194. bd.setAppId(stringVault.getData());
  195. bd.setPosId(basicConfig.getCode());
  196. bd.setStoreId(dto.getId().toString());
  197. bd.setName("("+basicConfig.getCode()+")"+dto.getMerchant_short_name());
  198. return paymentService.bindPos(bd);
  199. }
  200. // }
  201. }
  202. return VaultsResponse.success();
  203. }
  204. private VaultsResponse<String> modifyVault(UserDto dto) {
  205. //修改开户信息
  206. if(dto.getType().equals("3")){
  207. //个人
  208. VaultsResponse<String> indvmodifyVault = this.merchantIndvmodify(dto);
  209. if(!indvmodifyVault.validate()){
  210. return indvmodifyVault;
  211. }
  212. }else{
  213. //商户
  214. VaultsResponse<String> entmodifyVault = this.merchantEntmodify(dto);
  215. if(!entmodifyVault.validate()){
  216. return entmodifyVault;
  217. }
  218. }
  219. return VaultsResponse.success();
  220. }
  221. /**
  222. * 添加分账商户
  223. * @param dto
  224. * @return
  225. */
  226. private VaultsResponse merchantCreate(UserDto dto) {
  227. User user = new User();
  228. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  229. user.setSystem_id(bc.getSystemId());
  230. user.setIsspid(bc.getPid());
  231. UserDetail detail = new UserDetail();
  232. detail.setType(dto.getType());
  233. detail.setMerchant_short_name(dto.getMerchant_short_name());
  234. detail.setMerchant_name(dto.getMerchant_name());
  235. detail.setPhone(dto.getPhone());
  236. user.setMerchant_create_request(detail);
  237. UserBack back = null;
  238. try {
  239. back = (UserBack) YmUtil.resultBack(user,new UserBack());
  240. } catch (IllegalAccessException e) {
  241. e.printStackTrace();
  242. return VaultsResponse.failed(e.getMessage());
  243. }
  244. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  245. VaultsResponse vaultsResponse = updateMerchantId(dto.getId(), dto.getSourceId(), back.getMerchant_id(),0,dto.getRemained_amt(),bc.getCode(),dto.getProportion());
  246. if(!vaultsResponse.validate()){
  247. return vaultsResponse;
  248. }
  249. return VaultsResponse.success(back.getMerchant_id());
  250. }
  251. return VaultsResponse.failed(back.getResult().getComment());
  252. }
  253. private VaultsResponse updateMerchantId(Integer id, Integer source, String merchantId, Integer status, Long remainedAmt, String code, BigDecimal proportion) {
  254. VaultsResponse vaultsResponse;
  255. OperatorIdParams operatorIdParams = new OperatorIdParams();
  256. operatorIdParams.setOperatorId(TokenContext.cureOperatorId());
  257. operatorIdParams.setId(id.toString());
  258. operatorIdParams.setMerchantId(merchantId);
  259. operatorIdParams.setSource(source);
  260. operatorIdParams.setStatus(status);
  261. operatorIdParams.setCode(code);
  262. operatorIdParams.setRemainedAmt(remainedAmt);
  263. if(source.equals(3)){
  264. vaultsResponse = customerFeignClient.updateMerchantId(operatorIdParams);
  265. }else{
  266. /* if(proportion != null){
  267. operatorIdParams.setProportion(proportion.divide(new BigDecimal(100.0)));
  268. }*/
  269. vaultsResponse = partnerFeignClient.updateMerchantId(operatorIdParams);
  270. }
  271. return vaultsResponse;
  272. }
  273. /**
  274. * 个人分账商户开户
  275. * @param dto
  276. * @return
  277. */
  278. private VaultsResponse merchantIndvregister(UserDto dto){
  279. IndvregisterAdd iAdd = new IndvregisterAdd();
  280. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  281. iAdd.setSystem_id(bc.getSystemId());
  282. iAdd.setIsspid(bc.getPid());
  283. IndvregisterAddDetail detail = new IndvregisterAddDetail();
  284. detail.setMerchant_id(dto.getMerchant_id());
  285. detail.setIdentity_begin_date(dto.getIdentity_begin_date());
  286. if(StringUtils.isNotEmpty(dto.getIdentity_end_date())){
  287. detail.setIdentity_end_date(dto.getIdentity_end_date());
  288. }
  289. detail.setIdentity_validity_type(dto.getIdentity_validity_type());
  290. detail.setContact_phone(dto.getContact_phone());
  291. detail.setCert_photo_a(this.merchantPicture(dto.getCert_photo_a()).getData());
  292. detail.setCert_photo_b(this.merchantPicture(dto.getCert_photo_b()).getData());
  293. detail.setLegal_name(dto.getLegal_name());
  294. detail.setIdentity_no(dto.getIdentity_no());
  295. detail.setMerchant_name(dto.getMerchant_name());
  296. //detail.setIdentity_type(dto.getIdentity_type());
  297. iAdd.setMerchant_indvregister_request(detail);
  298. BaseBack back = null;
  299. try {
  300. back = (BaseBack) YmUtil.resultBack(iAdd,new BaseBack());
  301. } catch (IllegalAccessException e) {
  302. e.printStackTrace();
  303. return VaultsResponse.failed(e.getMessage());
  304. }
  305. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  306. return VaultsResponse.success();
  307. }
  308. return VaultsResponse.failed(back.getResult().getComment());
  309. }
  310. /**
  311. * 个人分账商户修改
  312. * @param dto
  313. * @return
  314. */
  315. private VaultsResponse merchantIndvmodify(UserDto dto){
  316. IndvregisterUpdate iUpdate = new IndvregisterUpdate();
  317. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  318. iUpdate.setSystem_id(bc.getSystemId());
  319. iUpdate.setIsspid(bc.getPid());
  320. IndvregisterUpdateDetail iUpdateDetail = new IndvregisterUpdateDetail();
  321. iUpdateDetail.setMerchant_id(dto.getMerchant_id());
  322. iUpdateDetail.setIdentity_begin_date(dto.getIdentity_begin_date());
  323. if(StringUtils.isNotEmpty(dto.getIdentity_end_date())){
  324. iUpdateDetail.setIdentity_end_date(dto.getIdentity_end_date());
  325. }
  326. iUpdateDetail.setIdentity_validity_type(dto.getIdentity_validity_type());
  327. iUpdateDetail.setContact_phone(dto.getContact_phone());
  328. if(StringUtils.isEmpty(dto.getCert_photo_a().getBase64Str())){
  329. for (ImageListDto imageListDto : dto.getImage_list()) {
  330. if(imageListDto.getFile_type().equals("01")){
  331. iUpdateDetail.setCert_photo_a(imageListDto.getFile_id());
  332. break;
  333. }
  334. }
  335. }else{
  336. iUpdateDetail.setCert_photo_a(this.merchantPicture(dto.getCert_photo_a()).getData());
  337. }
  338. if(StringUtils.isEmpty(dto.getCert_photo_b().getBase64Str())){
  339. for (ImageListDto imageListDto : dto.getImage_list()) {
  340. if(imageListDto.getFile_type().equals("02")){
  341. iUpdateDetail.setCert_photo_b(imageListDto.getFile_id());
  342. break;
  343. }
  344. }
  345. }else{
  346. iUpdateDetail.setCert_photo_b(this.merchantPicture(dto.getCert_photo_b()).getData());
  347. }
  348. iUpdate.setMerchant_indvmodify_request(iUpdateDetail);
  349. BaseBack back = null;
  350. try {
  351. back = (BaseBack) YmUtil.resultBack(iUpdate,new BaseBack());
  352. } catch (IllegalAccessException e) {
  353. e.printStackTrace();
  354. return VaultsResponse.failed(e.getMessage());
  355. }
  356. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  357. return VaultsResponse.success();
  358. }
  359. return VaultsResponse.failed(back.getResult().getComment());
  360. }
  361. /**
  362. * 企业分账商户开户
  363. * @param dto
  364. * @return
  365. */
  366. private VaultsResponse merchantEntregister(UserDto dto){
  367. EntregisterAdd iAdd = new EntregisterAdd();
  368. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  369. iAdd.setSystem_id(bc.getSystemId());
  370. iAdd.setIsspid(bc.getPid());
  371. EntregisterAddDetail detail = new EntregisterAddDetail();
  372. detail.setMerchant_id(dto.getMerchant_id());
  373. detail.setLicense_begin_date(dto.getLicense_begin_date());
  374. if(StringUtils.isNotEmpty(dto.getLicense_end_date())){
  375. detail.setLicense_end_date(dto.getLicense_end_date());
  376. }
  377. detail.setLicense_validity_type(dto.getLicense_validity_type());
  378. List<String> areaList = areaService.getAreaCode(dto.getLicense_area());
  379. detail.setLicense_province_code(areaList.get(0));
  380. detail.setLicense_city_code(areaList.get(1));
  381. detail.setLicense_area_code(areaList.get(2));
  382. detail.setLicense_address(dto.getLicense_address());
  383. detail.setLegal_name(dto.getLegal_name());
  384. detail.setIdentity_no(dto.getIdentity_no());
  385. detail.setIdentity_begin_date(dto.getIdentity_begin_date());
  386. if(StringUtils.isNotEmpty(dto.getIdentity_end_date())){
  387. detail.setIdentity_end_date(dto.getIdentity_end_date());
  388. }
  389. detail.setIdentity_validity_type(dto.getIdentity_validity_type());
  390. detail.setContact_name(dto.getContact_name());
  391. detail.setContact_phone(dto.getContact_phone());
  392. detail.setLicense_photo(this.merchantPicture(dto.getLicense_photo()).getData());
  393. detail.setCert_photo_a(this.merchantPicture(dto.getCert_photo_a()).getData());
  394. detail.setCert_photo_b(this.merchantPicture(dto.getCert_photo_b()).getData());
  395. detail.setMerchant_name(dto.getMerchant_name());
  396. detail.setLicense_code(dto.getLicense_code());
  397. //detail.setIdentity_type(dto.getIdentity_type());
  398. iAdd.setMerchant_entregister_request(detail);
  399. BaseBack back = null;
  400. try {
  401. back = (BaseBack) YmUtil.resultBack(iAdd,new BaseBack());
  402. } catch (IllegalAccessException e) {
  403. e.printStackTrace();
  404. return VaultsResponse.failed(e.getMessage());
  405. }
  406. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  407. return VaultsResponse.success();
  408. }
  409. return VaultsResponse.failed(back.getResult().getComment());
  410. }
  411. /**
  412. * 企业分账商户修改
  413. * @param dto
  414. * @return
  415. */
  416. private VaultsResponse merchantEntmodify(UserDto dto){
  417. EntregisterUpdate iUpdate = new EntregisterUpdate();
  418. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  419. iUpdate.setSystem_id(bc.getSystemId());
  420. iUpdate.setIsspid(bc.getPid());
  421. EntregisterUpdateDetail iUpdateDetail = new EntregisterUpdateDetail();
  422. iUpdateDetail.setMerchant_id(dto.getMerchant_id());
  423. iUpdateDetail.setLicense_begin_date(dto.getLicense_begin_date());
  424. if(StringUtils.isNotEmpty(dto.getLicense_end_date())){
  425. iUpdateDetail.setLicense_end_date(dto.getLicense_end_date());
  426. }
  427. iUpdateDetail.setLicense_validity_type(dto.getLicense_validity_type());
  428. List<String> areaList = areaService.getAreaCode(dto.getLicense_area());
  429. iUpdateDetail.setLicense_province_code(areaList.get(0));
  430. iUpdateDetail.setLicense_city_code(areaList.get(1));
  431. iUpdateDetail.setLicense_area_code(areaList.get(2));
  432. iUpdateDetail.setLicense_address(dto.getLicense_address());
  433. iUpdateDetail.setLegal_name(dto.getLegal_name());
  434. iUpdateDetail.setIdentity_no(dto.getIdentity_no());
  435. iUpdateDetail.setIdentity_begin_date(dto.getIdentity_begin_date());
  436. if(StringUtils.isNotEmpty(dto.getIdentity_end_date())){
  437. iUpdateDetail.setIdentity_end_date(dto.getIdentity_end_date());
  438. }
  439. iUpdateDetail.setIdentity_validity_type(dto.getIdentity_validity_type());
  440. iUpdateDetail.setContact_name(dto.getContact_name());
  441. iUpdateDetail.setContact_phone(dto.getContact_phone());
  442. if(StringUtils.isEmpty(dto.getLicense_photo().getBase64Str())){
  443. for (ImageListDto imageListDto : dto.getImage_list()) {
  444. if(imageListDto.getFile_type().equals("03")){
  445. iUpdateDetail.setLicense_photo(imageListDto.getFile_id());
  446. break;
  447. }
  448. }
  449. }else{
  450. iUpdateDetail.setLicense_photo(this.merchantPicture(dto.getLicense_photo()).getData());
  451. }
  452. if(StringUtils.isEmpty(dto.getCert_photo_a().getBase64Str())){
  453. for (ImageListDto imageListDto : dto.getImage_list()) {
  454. if(imageListDto.getFile_type().equals("01")){
  455. iUpdateDetail.setCert_photo_a(imageListDto.getFile_id());
  456. break;
  457. }
  458. }
  459. }else{
  460. iUpdateDetail.setCert_photo_a(this.merchantPicture(dto.getCert_photo_a()).getData());
  461. }
  462. if(StringUtils.isEmpty(dto.getCert_photo_b().getBase64Str())){
  463. for (ImageListDto imageListDto : dto.getImage_list()) {
  464. if(imageListDto.getFile_type().equals("02")){
  465. iUpdateDetail.setCert_photo_b(imageListDto.getFile_id());
  466. break;
  467. }
  468. }
  469. }else{
  470. iUpdateDetail.setCert_photo_b(this.merchantPicture(dto.getCert_photo_b()).getData());
  471. }
  472. iUpdate.setMerchant_entmodify_request(iUpdateDetail);
  473. BaseBack back = null;
  474. try {
  475. back = (BaseBack) YmUtil.resultBack(iUpdate,new BaseBack());
  476. } catch (IllegalAccessException e) {
  477. e.printStackTrace();
  478. return VaultsResponse.failed(e.getMessage());
  479. }
  480. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  481. return VaultsResponse.success();
  482. }
  483. return VaultsResponse.failed(back.getResult().getComment());
  484. }
  485. /**
  486. * 分账商户业务入驻
  487. * @param dto
  488. * @return
  489. */
  490. private VaultsResponse merchantOpen(UserDto dto){
  491. OpenAdd openAdd = new OpenAdd();
  492. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  493. openAdd.setSystem_id(bc.getSystemId());
  494. openAdd.setIsspid(bc.getPid());
  495. openAdd.setMerchant_open_request(this.fill(dto));
  496. BaseBack back = null;
  497. try {
  498. back = (BaseBack) YmUtil.resultBack(openAdd,new BaseBack());
  499. } catch (IllegalAccessException e) {
  500. e.printStackTrace();
  501. return VaultsResponse.failed(e.getMessage());
  502. }
  503. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  504. return VaultsResponse.success(back);
  505. }else if(YmUtil.ERROR.equals(back.getResult().getId())){
  506. return VaultsResponse.failed(back.getResult().getComment());
  507. }
  508. return VaultsResponse.failed();
  509. }
  510. /**
  511. * 入驻数据填充
  512. * @param dto
  513. * @return
  514. */
  515. private OpenDetail fill(UserDto dto){
  516. OpenDetail detail = new OpenDetail();
  517. detail.setMerchant_id(dto.getMerchant_id());
  518. detail.setSettle_type(dto.getSettle_type());
  519. /* detail.setSettlement_way(dto.getSettlement_way());
  520. detail.setWithdraw_way(dto.getWithdraw_way());*/
  521. detail.setCard_no(dto.getCard_no());
  522. detail.setParent_bank_name(dto.getParent_bank_name());
  523. detail.setParent_bank_code(dto.getParent_bank_code());
  524. List<String> areaList = areaService.getAreaCode(dto.getBank_area());
  525. detail.setProvince(areaList.get(0));
  526. detail.setCity(areaList.get(1));
  527. detail.setBranch_bank_code(dto.getBranch_bank_code());
  528. detail.setBranch_bank_name(dto.getBranch_bank_name());
  529. if(StringUtils.isEmpty(dto.getSettle_photo_a().getBase64Str())){
  530. for (ImageListDto imageListDto : dto.getImage_list()) {
  531. if(imageListDto.getFile_type().equals("13")){
  532. detail.setSettle_photo_a(imageListDto.getFile_id());
  533. break;
  534. }
  535. }
  536. }else{
  537. detail.setSettle_photo_a(this.merchantPicture(dto.getSettle_photo_a()).getData());
  538. }
  539. if(StringUtils.isEmpty(dto.getSettle_photo_b().getBase64Str())){
  540. for (ImageListDto imageListDto : dto.getImage_list()) {
  541. if(imageListDto.getFile_type().equals("14")){
  542. detail.setSettle_photo_b(imageListDto.getFile_id());
  543. break;
  544. }
  545. }
  546. }else{
  547. detail.setSettle_photo_b(this.merchantPicture(dto.getSettle_photo_b()).getData());
  548. }
  549. detail.setRemained_amt(dto.getRemained_amt());
  550. detail.setSettle_abstract(dto.getSettle_abstract());
  551. return detail;
  552. }
  553. /**
  554. * 分账商户业务入驻修改
  555. * @param dto
  556. * @return
  557. */
  558. private VaultsResponse merchantOpenModify(UserDto dto){
  559. OpenUpdate openUpdate = new OpenUpdate();
  560. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  561. openUpdate.setSystem_id(bc.getSystemId());
  562. openUpdate.setIsspid(bc.getPid());
  563. openUpdate.setMerchant_openmodify_request(this.fill(dto));
  564. BaseBack back = null;
  565. try {
  566. back = (BaseBack) YmUtil.resultBack(openUpdate,new BaseBack());
  567. } catch (IllegalAccessException e) {
  568. e.printStackTrace();
  569. return VaultsResponse.failed(e.getMessage());
  570. }
  571. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  572. return VaultsResponse.success(back);
  573. }
  574. return VaultsResponse.failed();
  575. }
  576. /**
  577. * 分账商户查询
  578. * @param phone
  579. * @param merchantId
  580. * @return
  581. */
  582. @Override
  583. public VaultsResponse<UserSearchBack> merchantQuery(String phone, String merchantId){
  584. SearchDto dto = new SearchDto();
  585. dto.setPhone(phone);
  586. dto.setMerchantId(merchantId);
  587. return this.merchantQuery(dto);
  588. }
  589. @Override
  590. public VaultsResponse<UserSearchBack> merchantQuery(SearchDto dto) {
  591. UserSearch userSearch = new UserSearch();
  592. BasicConfiguration bc = Basic.getSystemParameter(TokenContext.cureOperatorId());
  593. userSearch.setSystem_id(bc.getSystemId());
  594. userSearch.setIsspid(bc.getPid());
  595. UserSearchDetail detail = new UserSearchDetail();
  596. detail.setPhone(dto.getPhone());
  597. detail.setMerchant_id(dto.getMerchantId());
  598. userSearch.setMerchant_query_request(detail);
  599. UserSearchBack back = null;
  600. try {
  601. String val = (String) YmUtil.resultBack(userSearch,new UserSearchBack());
  602. JSONObject jsonObject = new JSONObject(JSON.parseObject(val));
  603. if(val.contains("image_list")){
  604. List<ImageListBack> list = jsonObject.getJSONArray("image_list").stream().map(item -> JSON.parseObject(item.toString(), new TypeReference<ImageListBack>() {})).collect(Collectors.toList());
  605. jsonObject.put("image_list",list);
  606. }
  607. back = JSONObject.toJavaObject(jsonObject, UserSearchBack.class);
  608. if(dto.getId() != null && dto.getSourceId() != null){
  609. EntityIdParams entityIdParams = new EntityIdParams();
  610. entityIdParams.setId(dto.getId());
  611. if (dto.getSourceId().equals(1)){
  612. VaultsResponse<OperatorDTO> vaultsResponse = partnerFeignClient.getOperator(entityIdParams);
  613. if(vaultsResponse.validate()){
  614. back.setProportion(vaultsResponse.getData().getSplitProportion().multiply(new BigDecimal(100)));
  615. }
  616. }else{
  617. VaultsResponse<OperatorDTO> vaultsResponse = partnerFeignClient.getSupplier(entityIdParams);
  618. if(vaultsResponse.validate()){
  619. back.setProportion(vaultsResponse.getData().getSplitProportion().multiply(new BigDecimal(100)));
  620. }
  621. }
  622. }
  623. } catch (IllegalAccessException e) {
  624. e.printStackTrace();
  625. return VaultsResponse.failed(e.getMessage());
  626. }
  627. if(YmUtil.SUCCESS.equals(back.getResult().getId())){
  628. return VaultsResponse.success(back);
  629. }else if("9990".equals(back.getResult().getId())){
  630. return VaultsResponse.success(null);
  631. }
  632. return VaultsResponse.failed();
  633. }
  634. }