private boolean _doWithIntegral(DcUserIntegralDetailDTO detail)
     throws IntegralNotEnoughException {
   if (detail == null) {
     return false;
   }
   int effectCount = 0;
   int integralCount = IntegerUtils.parseInt(detail.getIntegralCount());
   // 竞拍成功前不消耗用户积分.
   if (detail.getSourceEnum() != DcIntegralSourceEnums.AUCTION_BID) {
     if (integralCount > 0) {
       effectCount = dcUserService.incrIntegralByUser(detail.getUserId(), Math.abs(integralCount));
     } else if (integralCount < 0) {
       DcIntegralSourceEnums source = detail.getSourceEnum();
       if (!hasEnoughIntegral(detail.getUserId(), source)) {
         throw new IntegralNotEnoughException();
       }
       effectCount = dcUserService.decrIntegralByUser(detail.getUserId(), Math.abs(integralCount));
     }
   }
   if (detail.getSourceEnum() != DcIntegralSourceEnums.WINNER_GANE) {
     dcMessageService.addIntegralMessage(detail, true);
   }
   return true;
 }