Merge branch 'refs/heads/test'
This commit is contained in:
@ -56,10 +56,15 @@ public class DivideInfoDO extends BaseDO {
|
|||||||
* 分账接收方账号
|
* 分账接收方账号
|
||||||
*/
|
*/
|
||||||
private String account;
|
private String account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分账金额
|
* 分账金额
|
||||||
*/
|
*/
|
||||||
private Integer amount;
|
private Integer amount;
|
||||||
|
/**
|
||||||
|
* 可用于分账回退的金额
|
||||||
|
*/
|
||||||
|
private Integer refundAmount;
|
||||||
/**
|
/**
|
||||||
* 估算金额
|
* 估算金额
|
||||||
*/
|
*/
|
||||||
|
@ -154,6 +154,7 @@ public class DivideServiceImpl implements DivideService {
|
|||||||
.setType(divideCompanyDO.getType())
|
.setType(divideCompanyDO.getType())
|
||||||
.setAccount(divideCompanyDO.getAccount())
|
.setAccount(divideCompanyDO.getAccount())
|
||||||
.setAmount(money)
|
.setAmount(money)
|
||||||
|
.setRefundAmount(money)
|
||||||
.setComputeAmount(money)
|
.setComputeAmount(money)
|
||||||
.setDescription("给" + divideCompanyDO.getName() + "分账");
|
.setDescription("给" + divideCompanyDO.getName() + "分账");
|
||||||
infoDOList.add(divideInfoDO);
|
infoDOList.add(divideInfoDO);
|
||||||
@ -674,19 +675,21 @@ public class DivideServiceImpl implements DivideService {
|
|||||||
List<DivideCompanyDO> companyList = divideCompanyService.getList();
|
List<DivideCompanyDO> companyList = divideCompanyService.getList();
|
||||||
Map<String, DivideCompanyDO> companyMap = companyList.stream().collect(Collectors.toMap(DivideCompanyDO::getName, vo -> vo));
|
Map<String, DivideCompanyDO> companyMap = companyList.stream().collect(Collectors.toMap(DivideCompanyDO::getName, vo -> vo));
|
||||||
|
|
||||||
|
//更新可分账回退金额
|
||||||
|
List<DivideInfoDO> updateList = new ArrayList<>();
|
||||||
for (DivideDO divideDO : backList) {
|
for (DivideDO divideDO : backList) {
|
||||||
PayClient client = channelService.getPayClient(divideDO.getChannelId());
|
PayClient client = channelService.getPayClient(divideDO.getChannelId());
|
||||||
//查询出分账的具体条数
|
//查询出分账的具体条数
|
||||||
List<DivideInfoDO> divideListByTi = divideInfoService.getDivideListByTi(divideDO.getChannelOrderNo());
|
List<DivideInfoDO> divideListByTi = divideInfoService.getDivideListByTi(divideDO.getChannelOrderNo());
|
||||||
//全部回退
|
|
||||||
if(divideDO.getRefundPrice().equals(divideDO.getTotalPrice())){
|
|
||||||
|
|
||||||
|
//全部回退
|
||||||
|
if (divideDO.getBackPrice().equals(divideDO.getTotalPrice())) {
|
||||||
for (DivideInfoDO divideInfoDO : divideListByTi) {
|
for (DivideInfoDO divideInfoDO : divideListByTi) {
|
||||||
|
updateList.add(divideInfoDO.setRefundAmount(0));
|
||||||
doReturn(client, divideInfoDO, companyMap.get(divideInfoDO.getName()).getAccount());
|
doReturn(client, divideInfoDO, companyMap.get(divideInfoDO.getName()).getAccount());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Integer refundPrice = divideDO.getRefundPrice();
|
Integer refundPrice = divideDO.getBackPrice();
|
||||||
//算出每个公司应回退的金额
|
//算出每个公司应回退的金额
|
||||||
for (DivideCompanyDO companyDO : companyList) {
|
for (DivideCompanyDO companyDO : companyList) {
|
||||||
int backmoney = (int) Math.ceil(refundPrice * Double.valueOf(companyDO.getProportion()));
|
int backmoney = (int) Math.ceil(refundPrice * Double.valueOf(companyDO.getProportion()));
|
||||||
@ -694,27 +697,38 @@ public class DivideServiceImpl implements DivideService {
|
|||||||
List<DivideInfoDO> baList = divideListByTi.stream().filter(vo -> vo.getName().equals(companyDO.getName())).collect(Collectors.toList());
|
List<DivideInfoDO> baList = divideListByTi.stream().filter(vo -> vo.getName().equals(companyDO.getName())).collect(Collectors.toList());
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
for (DivideInfoDO infoDO : baList) {
|
for (DivideInfoDO infoDO : baList) {
|
||||||
sum = sum+infoDO.getAmount();
|
if(infoDO.getRefundAmount()==0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sum = sum + infoDO.getRefundAmount();
|
||||||
if (sum < backmoney) {
|
if (sum < backmoney) {
|
||||||
doReturn(client, infoDO, companyDO.getAccount());
|
doReturn(client, infoDO, companyDO.getAccount());
|
||||||
|
updateList.add(infoDO.setRefundAmount(0));
|
||||||
} else if (sum == backmoney) {
|
} else if (sum == backmoney) {
|
||||||
doReturn(client, infoDO, companyDO.getAccount());
|
doReturn(client, infoDO, companyDO.getAccount());
|
||||||
|
updateList.add(infoDO.setRefundAmount(0));
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
int leftRefundAmount = sum -backmoney;
|
||||||
int left = backmoney + infoDO.getAmount() - sum;
|
int left = backmoney + infoDO.getAmount() - sum;
|
||||||
infoDO.setAmount(left);
|
infoDO.setRefundAmount(left);
|
||||||
doReturn(client, infoDO, companyDO.getAccount());
|
doReturn(client, infoDO, companyDO.getAccount());
|
||||||
|
updateList.add(infoDO.setRefundAmount(leftRefundAmount));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(updateList)) {
|
||||||
|
divideInfoService.updateList(updateList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void doReturn(PayClient client, DivideInfoDO divideInfoDO, String account) {
|
void doReturn(PayClient client, DivideInfoDO divideInfoDO, String account) {
|
||||||
PayDivideBackUnifiedDto payDivideBackUnifiedDto = new PayDivideBackUnifiedDto();
|
PayDivideBackUnifiedDto payDivideBackUnifiedDto = new PayDivideBackUnifiedDto();
|
||||||
payDivideBackUnifiedDto.setAmount(divideInfoDO.getAmount().longValue());
|
payDivideBackUnifiedDto.setAmount(divideInfoDO.getRefundAmount().longValue());
|
||||||
payDivideBackUnifiedDto.setDescription("分账回退");
|
payDivideBackUnifiedDto.setDescription("分账回退");
|
||||||
payDivideBackUnifiedDto.setOrderId(divideInfoDO.getOrderId());
|
payDivideBackUnifiedDto.setOrderId(divideInfoDO.getOrderId());
|
||||||
payDivideBackUnifiedDto.setReturnMchid(account);
|
payDivideBackUnifiedDto.setReturnMchid(account);
|
||||||
|
Reference in New Issue
Block a user