MerchantServiceImpl.java 24 KB

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