| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package com.poteviohealth.ym.ipos.service.impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.TypeReference;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.google.common.collect.Lists;
- import com.poteviohealth.cgp.common.model.VaultsResponse;
- import com.poteviohealth.ym.ipos.model.back.BaseBack;
- import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
- import com.poteviohealth.ym.ipos.model.split.*;
- import com.poteviohealth.ym.ipos.model.split.back.*;
- import com.poteviohealth.ym.ipos.model.split.detail.*;
- import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
- import com.poteviohealth.ym.ipos.service.ISplitRecordsDetailService;
- import com.poteviohealth.ym.ipos.service.ISplitRecordsService;
- import com.poteviohealth.ym.ipos.service.ISplitService;
- import com.poteviohealth.ym.ipos.utils.YmUtil;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * 分账
- * @author Qin
- */
- @Service
- public class SplitServiceImpl implements ISplitService {
- @Value("${pay.field.code}")
- private String code;
- @Resource
- private ISplitRecordsService splitRecordsService;
- @Resource
- private ISplitRecordsDetailService splitRecordsDetailService;
- @Override
- public VaultsResponse delayConfirm(SplitRecords records, List<SplitRecordsDetail> details) {
- PayConfirm payConfirm = new PayConfirm();
- payConfirm.setPos_id(code);
- payConfirm.setPos_seq(records.getSplitId().toString());
- payConfirm.setStore_id(records.getOperatorId().toString());
- PayConfirmDetail detail = new PayConfirmDetail();
- detail.setOrg_pos_seq(records.getPayId().toString());
- ExtendParamsConfirm extendParamsConfirm = new ExtendParamsConfirm();
- SplitInfoConfirm splitInfoConfirm = new SplitInfoConfirm();
- List<SplitListConfirm> list = Lists.newArrayList();
- String amt = "";
- for (SplitRecordsDetail recordsDetail : details) {
- if(recordsDetail.getSourceId().equals(0)){
- amt = recordsDetail.getDivAmt();
- continue;
- }
- SplitListConfirm slc = new SplitListConfirm();
- slc.setMerchant_id(recordsDetail.getMerchantId());
- slc.setDiv_amt(recordsDetail.getDivAmt());
- list.add(slc);
- }
- splitInfoConfirm.setKeep_amt(amt);
- splitInfoConfirm.setSplit_list(list);
- extendParamsConfirm.setSplit_info(splitInfoConfirm);
- detail.setExtend_params(extendParamsConfirm);
- payConfirm.setDelay_confirm_request(detail);
- PayConfirmBack back = null;
- try {
- back = (PayConfirmBack) YmUtil.resultBack(payConfirm,new PayConfirmBack());
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId()) || YmUtil.FAIL.equals(back.getResult().getId())){
- return VaultsResponse.success(back.getResult().getId());
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse delayConfirmQuery(String splitId,String operatorId) {
- PayConfirmQuery paymentQuery = new PayConfirmQuery();
- paymentQuery.setPos_id(code);
- paymentQuery.setStore_id(operatorId);
- DelayConfirmQueryRequest detail = new DelayConfirmQueryRequest();
- detail.setOrg_pos_seq(splitId);
- paymentQuery.setDelay_confirmquery_request(detail);
- PayConfirmQueryBack back = null;
- try {
- back = (PayConfirmQueryBack) YmUtil.resultBack(paymentQuery,new PayConfirmQueryBack());
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success(back.getRefund_status());
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse delayConfirmRefund(Long splitId) {
- QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("split_id",splitId);
- SplitRecords splitRecords = splitRecordsService.getOne(queryWrapper);
- List<SplitRecordsDetail> list = splitRecordsDetailService.list(queryWrapper);
- PayConfirmRefund payConfirmRefund = new PayConfirmRefund();
- payConfirmRefund.setPos_id(code);
- payConfirmRefund.setStore_id(splitRecords.getOperatorId().toString());
- PayConfirmDetail detail = new PayConfirmDetail();
- detail.setOrg_pos_seq(splitId.toString());
- ExtendParamsConfirm extendParamsConfirm = new ExtendParamsConfirm();
- SplitInfoConfirm splitInfoConfirm = new SplitInfoConfirm();
- List<SplitListConfirm> split_list = Lists.newArrayList();
- for (SplitRecordsDetail recordsDetail : list) {
- if(recordsDetail.getSourceId().equals(0)){
- splitInfoConfirm.setKeep_amt(recordsDetail.getDivAmt());
- }else{
- SplitListConfirm listConfirm = new SplitListConfirm();
- listConfirm.setMerchant_id(recordsDetail.getMerchantId());
- listConfirm.setDiv_amt(recordsDetail.getDivAmt());
- split_list.add(listConfirm);
- }
- }
- splitInfoConfirm.setSplit_list(split_list);
- extendParamsConfirm.setSplit_info(splitInfoConfirm);
- detail.setExtend_params(extendParamsConfirm);
- payConfirmRefund.setDelay_confirmrefund_request(detail);
- BaseBack back = null;
- try {
- back = (BaseBack) YmUtil.resultBack(payConfirmRefund,new BaseBack());
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success();
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public BaseBack delayRefundQuery(PayRefundQuery payRefundQuery) {
- return null;
- }
- @Override
- public VaultsResponse<SettlementQueryBack> merchantSettlementQuery(SettlementQueryDetail detail) {
- SettlementQuery settlementQuery = new SettlementQuery();
- settlementQuery.setMerchant_settlementquery_request(detail);
- SettlementQueryBack back = null;
- try {
- String val = (String) YmUtil.resultBack(settlementQuery,new SettlementQueryBack());
- JSONObject jsonObject = new JSONObject(JSON.parseObject(val));
- if(val.contains("list")){
- List<SettlementQueryList> list = jsonObject.getJSONArray("list").stream().map(item -> JSON.parseObject(item.toString(), new TypeReference<SettlementQueryList>() {})).collect(Collectors.toList());
- jsonObject.put("list",list);
- }
- back = JSONObject.toJavaObject(jsonObject, SettlementQueryBack.class);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success(back);
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse<AccountBalanceBack> accountBalanceQuery(String merchantId) {
- AccountBalance accountBalance = new AccountBalance();
- accountBalance.setMerchant_id(merchantId);
- AccountBalanceBack back = null;
- try {
- String val = (String) YmUtil.resultBack(accountBalance,new AccountBalanceBack());
- JSONObject jsonObject = new JSONObject(JSON.parseObject(val));
- if(val.contains("list")){
- List<AccountBalanceList> list = jsonObject.getJSONArray("list").stream().map(item -> JSON.parseObject(item.toString(), new TypeReference<AccountBalanceList>() {})).collect(Collectors.toList());
- jsonObject.put("list",list);
- }
- back = JSONObject.toJavaObject(jsonObject, AccountBalanceBack.class);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success(back);
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse<WithdrawBack> withdraw(WithdrawDto dto) {
- Withdraw withdraw = new Withdraw();
- WithdrawDetail detail = new WithdrawDetail();
- detail.setMerchant_id(dto.getMerchantId());
- detail.setAmount(dto.getAmount());
- withdraw.setMerchant_withdraw_request(detail);
- WithdrawBack back = null;
- try {
- back = (WithdrawBack) YmUtil.resultBack(withdraw,new WithdrawBack());
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success(back);
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- @Override
- public VaultsResponse<WithdrawBack> withdrawQuery(String withdrawSeq) {
- WithdrawQuery withdraw = new WithdrawQuery();
- WithdrawQueryDetail detail = new WithdrawQueryDetail();
- detail.setWithdraw_seq(withdrawSeq);
- withdraw.setMerchant_withdrawquery_request(detail);
- WithdrawBack back = null;
- try {
- back = (WithdrawBack) YmUtil.resultBack(withdraw,new WithdrawBack());
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return VaultsResponse.failed(e.getMessage());
- }
- if(YmUtil.SUCCESS.equals(back.getResult().getId())){
- return VaultsResponse.success(back);
- }
- return VaultsResponse.failed(back.getResult().getComment());
- }
- }
|