zhengfangyuan 3 лет назад
Родитель
Сommit
b275caacb3
3 измененных файлов: 65 добавлений и 122 удалений
  1. +16
    -1
      mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java
  3. +48
    -120
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java

+ 16
- 1
mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java Просмотреть файл

@@ -1,10 +1,13 @@
package com.iformall.schedule;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.WxSharingOrderDto;
import com.iformall.domain.po.WxMall;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.domain.po.WxProfitSharingOrder;
import com.iformall.enums.EnumPayStatus;
import com.iformall.enums.EnumPayWay;
import com.iformall.enums.EnumProfitSharingOrderStatus;
import com.iformall.enums.EnumProfitSharingOrderType;
@@ -31,6 +34,9 @@ public class SharingOrderRedoSchedule {

@Autowired
private WxProfitSharingOrderMapper wxProfitSharingOrderMapper;
@Autowired
WxPayOrderMapper wxPayOrderMapper;


@Autowired
@@ -56,7 +62,16 @@ public class SharingOrderRedoSchedule {
if (null != list) {
list.stream().forEach(sharingOrder->{
try {
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder);
WxPayOrder wxPayOrder = new WxPayOrder();
wxPayOrder.updateTenantInfo(sharingOrder);
wxPayOrder.setId(sharingOrder.getOrderId());
wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));
if (null == wxPayOrder) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " RES: wxPayOrder is null." );
}
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder,wxPayOrder);
if (result.code != ResultData.SUCCESS) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java Просмотреть файл

@@ -26,7 +26,7 @@ public interface WxProfitSharingOrderService {
/**
* 分账重试
*/
ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder);
ResultData redoSharingOrder(WxProfitSharingOrder sharingOrder,WxPayOrder payOrder);

/**
* 分账完结重试


+ 48
- 120
mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java Просмотреть файл

@@ -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


Загрузка…
Отмена
Сохранить