@@ -165,7 +165,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
@Override
@Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder) {
public ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder,WxPayOrder payOrder ) {
if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许");
@@ -186,42 +186,34 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor(),wxPayOrder.getPayVersion());
PayShareResult shareResult = null;
JSONArray jsonArray = null;
if(StringUtils.isNotBlank(sharingOrder.getReceivers())){
jsonArray = JSONArray.parseArray(sharingOrder.getReceivers());
}
List<WxProfitSharingResult> resultList = new ArrayList<WxProfitSharingResult>();
JSONArray recordJsonArray = null;
//总分模式,收款账户分账
if (EnumPayMchType.TOTAL.getCode() == payOrder.getMchType()) {
if(StringUtils.isNotBlank(sharingOrder.getReceivers())){
jsonArray = JSONArray.parseArray(sharingOrder.getReceivers());
recordJsonArray = JSONArray.parseArray(sharingOrder.getReceivers());
}
//直连模式,不用分账,直接完结分账
}else if (EnumPayMchType.DIRECT.getCode() == payOrder.getMchType()) {
//当前商户的收款账号,为了加上收款记录
WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrder, sharingOrder.getMerchantId(), payOrder.getTtPayWay(), payOrder.getMchType());
if (null == receiver) {
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前商户未配置收款账号");
}
StringBuffer sb = new StringBuffer("[{").append("\"description\":").append(receiver.getId()).append(",\"amount\":").append(sharingOrder.getPayAmount());
recordJsonArray = JSONArray.parseArray(sb.toString());
}
if(jsonArray == null || jsonArray.isEmpty()){
shareResult = payShareAdapterService.noReciverShare(cAppInfo, payAccount, sharingOrder);
}else{
final IdWorker idworker = IdWorker.get();
Date currentDate = new Date();
try {
jsonArray.stream().forEach(obj -> {
JSONObject receiver =(JSONObject) obj;
WxProfitSharingResult result = new WxProfitSharingResult();
result.setId(idworker.nextId());
result.updateTenantInfo(sharingOrder);
result.setMerchantId(sharingOrder.getMerchantId());
result.setSharingOrderId(sharingOrder.getId());
result.setSharingReceiverId(Long.valueOf(receiver.getString("description")));
result.setPayAmount(receiver.getInteger("amount"));
result.setCreateTime(currentDate);
result.setUpdateTime(currentDate);
result.setSharingStatus(EnumProfitSharingResultStatus.PROFIT_SHARING_RESULT_PENDING.getCode());
resultList.add(result);
});
}catch (Exception e) {
logger.error("分账详细信息为null",e);
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID);
}
shareResult = payShareAdapterService.haveReciversShare(cAppInfo, payAccount, sharingOrder, jsonArray, wxPayOrder.getMchType());
}
if (null == shareResult) {
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前支付模式调用分账未返回结果");
}
WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder();
updSharingOrder.updateTenantInfo(sharingOrder);
updSharingOrder.setId(sharingOrder.getId());
@@ -238,6 +230,32 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
updSharingOrder.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateById(updSharingOrder);
if (null == recordJsonArray || recordJsonArray.isEmpty()) {
return new ResultData(shareResult.getData());
}
List<WxProfitSharingResult> resultList = new ArrayList<WxProfitSharingResult>();
final IdWorker idworker = IdWorker.get();
Date currentDate = new Date();
try {
recordJsonArray.stream().forEach(obj -> {
JSONObject receiver =(JSONObject) obj;
WxProfitSharingResult result = new WxProfitSharingResult();
result.setId(idworker.nextId());
result.updateTenantInfo(sharingOrder);
result.setMerchantId(sharingOrder.getMerchantId());
result.setSharingOrderId(sharingOrder.getId());
result.setSharingReceiverId(Long.valueOf(receiver.getString("description")));
result.setPayAmount(receiver.getInteger("amount"));
result.setCreateTime(currentDate);
result.setUpdateTime(currentDate);
result.setSharingStatus(EnumProfitSharingResultStatus.PROFIT_SHARING_RESULT_PENDING.getCode());
resultList.add(result);
});
}catch (Exception e) {
logger.error("分账详细信息为null",e);
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID);
}
for (WxProfitSharingResult result:resultList) {
wxProfitSharingResultMapper.insert(result);
}
@@ -355,98 +373,8 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
return new ResultData();
}
ResultData resultData = redoSharingOrder(record);
ResultData resultData = redoSharingOrder(record,payOrder );
return resultData;
// if (!sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode()) &&
// !sharingOrderDto.getType().equals(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode())){
// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
// }
// EnumProfitSharingOrderType shareType = EnumProfitSharingOrderType.getEnum(sharingOrderDto.getType());
// if (null == shareType) {
// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),sharingOrderDto.getType()+"在分账方式中不存在。EnumProfitSharingOrderType");
// }
// WxAppinfo appInfo = getAppinfo(sharingOrderDto.getTenantId(),payWay);
// WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId());
// PayShareResult shareResult = null;
// JSONArray jsonArray = null;
//
// if(StringUtils.isNotBlank(record.getReceivers())){
// jsonArray = JSONArray.parseArray(record.getReceivers());
// }
//
// if(jsonArray == null || jsonArray.isEmpty()){
// shareResult = payShareAdapterService.noReciverShare(appInfo, payAccount, record, sharingOrderDto.getTransactionId(), sharingOrderDto.getShareAmount());
// }else{
// shareResult = payShareAdapterService.haveReciversShare(appInfo, payAccount, record, sharingOrderDto.getTransactionId(), jsonArray, shareType);
// }
//
// //总分模式,收款账户分账
//// if (EnumPayMchType.TOTAL.getCode() == mchType) {
//// if(StringUtils.isNotBlank(record.getReceivers())){
//// jsonArray = JSONArray.parseArray(record.getReceivers());
//// shareResult = payShareAdapterService.haveReciversShare(appInfo, payAccount, record,
//// sharingOrderDto.getTransactionId(), jsonArray, shareType);
//// }else {
//// return new ResultData();
//// }
//// //直连模式,不用分账,直接完结分账
//// }else if (EnumPayMchType.DIRECT.getCode() == mchType) {
//// shareResult = payShareAdapterService.noReciverShare(appInfo, payAccount, record, sharingOrderDto.getTransactionId(), sharingOrderDto.getShareAmount());
//// //当前商户的收款账号
//// WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), payOrder.getTtPayWay(), mchType);
//// if (null == receiver) {
//// return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前商户未配置收款账号");
//// }
//// StringBuffer sb = new StringBuffer("[{").append("\"description\":").append(receiver.getId()).append(",\"amount\":").append(sharingOrderDto.getShareAmount());
//// jsonArray = JSONArray.parseArray(sb.toString());
//// }
// if (null == shareResult) {
// return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前支付模式调用分账未返回结果");
// }
//
// WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder();
// updSharingOrder.updateTenantInfo(record);
// updSharingOrder.setId(record.getId());
// updSharingOrder.setOutSettleNo(record.getOutSettleNo());
// if (!shareResult.isSuccess()) {
// updSharingOrder.setSharingStatus(shareResult.getCode());
// updSharingOrder.setErrorMsg(shareResult.getMsg());
// updSharingOrder.setUpdateTime(new Date());
// wxProfitSharingOrderMapper.updateById(updSharingOrder);
// return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),updSharingOrder.getErrorMsg());
// }
// updSharingOrder.setSharingOrderNo(shareResult.getShareOrderNo());
// updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode());
// updSharingOrder.setUpdateTime(new Date());
// wxProfitSharingOrderMapper.updateById(updSharingOrder);
//
// if(jsonArray == null || jsonArray.isEmpty()){
// final IdWorker idworker = IdWorker.get();
// try {
// jsonArray.stream().forEach(obj -> {
// JSONObject receiver =(JSONObject) obj;
// Date currentDate = new Date();
// WxProfitSharingResult result = new WxProfitSharingResult();
// result.setId(idworker.nextId());
// result.updateTenantInfo(sharingOrderDto);
// result.setMerchantId(record.getMerchantId());
// result.setSharingOrderId(record.getId());
// result.setSharingReceiverId(Long.valueOf(receiver.getString("description")));
// result.setPayAmount(receiver.getInteger("amount"));
// result.setCreateTime(currentDate);
// result.setUpdateTime(currentDate);
// result.setSharingStatus(EnumProfitSharingResultStatus.PROFIT_SHARING_RESULT_PENDING.getCode());
// wxProfitSharingResultMapper.insert(result);
// });
// }catch (Exception e) {
// logger.error("分账详细信息为null",e);
//// return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID);
// }
// }
//
// return new ResultData(shareResult.getData());
}
@Override