Commit 9e23db2b authored by shiyu's avatar shiyu

计算用户账单,事务调整

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