Commit 9e23db2b authored by shiyu's avatar shiyu

计算用户账单,事务调整

parent ac418c19
......@@ -42,7 +42,7 @@ public class SysUserBillServiceImpl implements SysUserBillService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
public Result finishCalculate(DistributionOrder distributionOrder) throws Exception{
public Result finishCalculate(DistributionOrder distributionOrder){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
//账期
String accountPeriod = formatter.format(distributionOrder.getCreateTime());
......@@ -89,12 +89,13 @@ public class SysUserBillServiceImpl implements SysUserBillService {
return Result.success();
} catch (Exception e) {
logger.error("************ 订单完成后计算订单账单ERROR: {}", e);
throw new Exception("订单完成后计算订单账单ERROR");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
logger.info("======================== 订单号:{}, 订单完成后计算订单账单释放锁成功 ========================", distributionOrder.getDistributionOrderId());
}
}
return Result.failed();
}
}
......@@ -162,8 +162,10 @@ public class RefreshLogisticsJob {
//关联的订单账单,用户账户的待入账金额改为已入账
userAccountDetailDao.updateState(distributionOrder.getDistributionOrderId(), BillEnum.AccountDetailStateEnum.ENTRY.getCode());
//调整用户的月度账单
sysUserBillService.finishCalculate(distributionOrder);
Result result = sysUserBillService.finishCalculate(distributionOrder);
if (!result.getSuccess()) {
throw new Exception("调整用户的月度账单error");
}
} catch (Exception e) {
logger.error("订单自动完成,更新账单失败:{}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
......
......@@ -10,5 +10,5 @@ public interface SysUserBillService {
* @param distributionOrder
* @return
*/
Result finishCalculate(DistributionOrder distributionOrder) throws Exception;
Result finishCalculate(DistributionOrder distributionOrder);
}
......@@ -92,7 +92,10 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
userAccountDetailDao.insert(introduceAccountDetail);
//计算用户账单
userBillService.payCalculate(distributionOrder, distributorProfit);
Result result = userBillService.payCalculate(distributionOrder, distributorProfit);
if (!result.getSuccess()) {
throw new Exception("订单支付完成,计算用户账单error");
}
return Result.success();
} catch (Exception e) {
logger.error("新增用户账户明细error:{}", e);
......
......@@ -16,6 +16,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
......@@ -36,8 +40,9 @@ public class UserBillServiceImpl implements UserBillService {
@Autowired
DistributorProfitDao distributorProfitDao;
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
public Result payCalculate(DistributionOrder distributionOrder, DistributorProfit distributorProfit) throws Exception {
public Result payCalculate(DistributionOrder distributionOrder, DistributorProfit distributorProfit) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
//账期
String accountPeriod = formatter.format(distributionOrder.getCreateTime());
......@@ -98,13 +103,14 @@ public class UserBillServiceImpl implements UserBillService {
return Result.success();
} catch (Exception e) {
logger.error("************ 计算订单账单ERROR: {}", e);
throw new Exception("计算订单账单ERROR");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
logger.info("======================== 订单号:{}, 计算订单账单释放锁成功 ========================", distributionOrder.getDistributionOrderId());
}
}
return Result.failed();
}
......
......@@ -12,7 +12,7 @@ public interface UserBillService {
* @param distributorProfit
* @return
*/
Result payCalculate(DistributionOrder distributionOrder, DistributorProfit distributorProfit) throws Exception;
Result payCalculate(DistributionOrder distributionOrder, DistributorProfit distributorProfit);
}
......@@ -89,12 +89,12 @@ public class WxPayServiceTest {
@Test
public void refund() {
List<String> list = Arrays.asList("DA2407161343052675179");
List<String> list = Arrays.asList("DA2407161530475539946", "DA2407161638434429860");
list.forEach(orderId ->{
DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setDistributionOrderId(orderId);
dto.setAmount("10");
dto.setRefundPrice("10");
dto.setAmount("1");
dto.setRefundPrice("1");
Result result = wxPayServiceApi.refund(dto);
logger.info("申请微信支付退款:{}", result);
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment