@Transactional(rollbackFor = Exception.class) 8 @Override 9 public void notify(Map<String, Object> paramMap) { 10 11 log.info("投标成功"); 12 13 //获取投资编号 14 String agentBillNo = (String)paramMap.get("agentBillNo"); 15 16 boolean result = transFlowService.isSaveTransFlow(agentBillNo); 17 if(result){ 18 log.warn("幂等性返回"); 19 return; 20 } 21 22 //获取用户的绑定协议号 23 String bindCode = (String)paramMap.get("voteBindCode"); 24 String voteAmt = (String)paramMap.get("voteAmt"); 25 26 //修改商户系统中的用户账户金额:余额、冻结金额 27 userAccountMapper.updateAccount(bindCode, new BigDecimal("-" + voteAmt), new BigDecimal(voteAmt)); 28 29 //修改投资记录的投资状态改为已支付 30 LendItem lendItem = this.getByLendItemNo(agentBillNo); 31 lendItem.setStatus(1);//已支付 32 baseMapper.updateById(lendItem); 33 34 //修改标的信息:投资人数、已投金额 35 Long lendId = lendItem.getLendId(); 36 Lend lend = lendMapper.selectById(lendId); 37 lend.setInvestNum(lend.getInvestNum() + 1); 38 lend.setInvestAmount(lend.getInvestAmount().add(lendItem.getInvestAmount())); 39 lendMapper.updateById(lend); 40 41 //新增交易流水 42 TransFlowBO transFlowBO = new TransFlowBO( 43 agentBillNo, 44 bindCode, 45 new BigDecimal(voteAmt), 46 TransTypeEnum.INVEST_LOCK, 47 "投资项目编号:" + lend.getLendNo() + ",项目名称:" + lend.getTitle()); 48 transFlowService.saveTransFlow(transFlowBO); 49 }
时间: 2023-06-12 11:08:04 浏览: 76
这段代码是一个 Java 方法的实现,该方法用于处理投标成功的通知。方法使用 @Transactional 注解来确保事务的一致性,同时也会在遇到异常时进行回滚。该方法接收一个 Map 类型的参数,其中包含了投标成功的相关信息。在方法的第 14 行,通过参数获取了投资编号 agentBillNo。接着在第 16 行调用了 transFlowService.isSaveTransFlow 方法,该方法用于检查是否已经保存了交易流水,避免重复保存。如果已经保存,则在第 18 至 20 行之间进行幂等性返回。如果没有保存,则在第 22 至 39 行之间进行相关操作,包括修改用户账户金额、修改投资记录状态、修改标的信息、新增交易流水等。最后在第 42 至 48 行之间新增一条交易流水记录,并通过 transFlowService.saveTransFlow 方法进行保存。
相关问题
@Transactional(rollbackFor = Exception.class) 和 @Transactional 区别
@Transactional注解是Spring框架中常用的事务注解,用于标记一个方法需要进行事务管理。其中,@Transactional(rollbackFor = Exception.class)表示当该方法中出现异常时,会回滚事务,即撤销之前的操作。而@Transactional则表示不指定回滚的异常类型,默认情况下只有RuntimeException及其子类会回滚事务。
举个例子,如果一个方法中有以下代码:
```
@Transactional(rollbackFor = Exception.class)
public void doSomething() throws Exception {
// some code
}
```
那么当该方法中出现Exception或其子类异常时,会回滚事务。
而如果将上述代码改为:
```
@Transactional
public void doSomething() throws Exception {
// some code
}
```
则默认只有RuntimeException及其子类异常时,会回滚事务。
@Override @Transactional(rollbackFor = Exception.class) public void prizeInfoUpdate(PrizeInfoUpdateDTO prizeInfoUpdateDTO){ PrizeInfoEntity prizeInfoEntity = BeanUtil.copyProperties(prizeInfoUpdateDTO, PrizeInfoEntity.class); prizeInfoDao.updateById(prizeInfoEntity); }
这是一个Java的方法,使用了注解@Transactional来保证方法在执行过程中出现异常时能够回滚。方法的作用是根据传入的PrizeInfoUpdateDTO对象更新奖品信息,使用了BeanUtil.copyProperties方法将DTO对象转换为实体类对象,然后调用PrizeInfoDao的updateById方法进行更新操作。需要注意的是,这个方法可能会抛出异常,需要进行异常处理。
阅读全文