代碼中怎麼寫事務?

代碼中怎麼寫註解?
1,第一步:看這篇文章介紹:
https://blog.csdn.net/wkl305268748/article/details/77619367
2,看完這篇文章,就知道只要添加一個註解@Transactional和catch後的回滾:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();就可以。
3,第三步:所以寫在代碼中就是如下:

/**
 * 回返用戶積分
 * @param memberId 用戶id
 * @return
 * @throws ServiceException
 */
**@Transactional**
RespReturnMemberPointsDTO returnMemberPoints(long memberId,String orderNo, int source);

@Override
public RespReturnMemberPointsDTO returnMemberPoints(long memberId, String orderNo, int source) {
log.info(“returnMemberPoints.memberId={}”,memberId);
RespReturnMemberPointsDTO respReturnMemberPointsDTO=new RespReturnMemberPointsDTO();
try {
//查詢積分記錄表是否有關於該用戶的記錄
PointRecordDO pointRecordDO = pointRecordDOMapper.queryPointRecordDOByOrderFlowNoAndSource(memberId, orderNo, source);
if (pointRecordDO != null) {
if ((System.currentTimeMillis() - pointRecordDO.getCreateTime().getTime()) / (1000 * 60 * 60 * 24) > 15) {
log.error(“距離積分扣減時間超過15天,orderNo:{}”, orderNo);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “距離積分扣減時間超過15天,orderNo:{}” + orderNo);
}
//將查出來的記錄變更爲已刪除
PointRecordDO pointRecord = new PointRecordDO();
pointRecord.setId(pointRecordDO.getId());
pointRecord.setFlag((byte) 1);
int i = pointRecordDOMapper.updateByPrimaryKeySelective(pointRecord);
if (i != 1) {
log.error(“更新表失敗,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “更新會員積分表失敗,memberId:{}” + memberId);
}
//返回用戶積分–更新用戶積分
int j = memberPointDOMapper.updateByPointUpward(memberId, pointRecordDO.getPoints());
if (j != 1) {
log.error(“更新表失敗,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “更新會員積分表失敗,memberId:{}” + memberId);
}
respReturnMemberPointsDTO.setIsReturnPoint(true);
}else{
log.error(“積分記錄表不存在該會員記錄,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

e.printStackTrace();
}
return respReturnMemberPointsDTO;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章