|
@@ -7,6 +7,7 @@ import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
|
|
|
import com.jkcredit.invoice.hub.model.dto.apiCarFree.InvoiceResult;
|
|
|
import com.jkcredit.invoice.hub.model.dto.apiCarFree.InvoiceResultDto;
|
|
|
import com.jkcredit.invoice.hub.model.dto.needCharge.NeedChargeDto;
|
|
|
+import com.jkcredit.invoice.hub.model.dto.realCharge.RealChargeDto;
|
|
|
import com.jkcredit.invoice.hub.model.dto.searchInvoice.SearchInvoiceDto;
|
|
|
import com.jkcredit.invoice.hub.model.dto.searchInvoiceResult.SearchInvoiceResultDto;
|
|
|
import com.jkcredit.invoice.hub.model.dto.user.UserDto;
|
|
@@ -28,6 +29,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -63,6 +65,7 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
|
|
|
UserService userService;
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void charge(List<CarFreeCarrierBillStartPo> startPoList) {
|
|
|
for (CarFreeCarrierBillStartPo po : startPoList) {
|
|
|
// 封装查询参数
|
|
@@ -101,18 +104,17 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
|
|
|
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InvoiceResult::getFee))), ArrayList::new));
|
|
|
//计费
|
|
|
newSearchInvoiceResultList.stream().forEach(t -> {
|
|
|
- // todo 上线后删除
|
|
|
- t.setTransactionId(t.getTransactionId() + System.currentTimeMillis());
|
|
|
- log.info("计费t + System.currentTimeMillis() = {}", t.getTransactionId());
|
|
|
+ t.setTransactionId(t.getTransactionId());
|
|
|
if (!redisTemplate.hasKey(CommonConstant.TRANSACTION_ID_KEY + t.getTransactionId())) {
|
|
|
- UserBalanceDto userBalanceDto = userBalanceService.getUserBalance(po.getUserId());
|
|
|
- UserBalanceInvoiceDto userBalanceInvoiceDto = new UserBalanceInvoiceDto();
|
|
|
- BeanUtil.copyProperties(userBalanceInvoiceDto, userBalanceDto);
|
|
|
- userBalanceInvoiceDto.setNum(t.getWaybillNum());
|
|
|
- userBalanceInvoiceDto.setTransactionId(t.getTransactionId());
|
|
|
- //发送到消息队列
|
|
|
- log.info("发送到消息队列");
|
|
|
- chargeProducer.send(userBalanceInvoiceDto);
|
|
|
+ // todo 此处计费需要使用消息实现
|
|
|
+// UserBalanceDto userBalanceDto = userBalanceService.getUserBalance(po.getUserId());
|
|
|
+// UserBalanceInvoiceDto userBalanceInvoiceDto = new UserBalanceInvoiceDto();
|
|
|
+// BeanUtil.copyProperties(userBalanceInvoiceDto, userBalanceDto);
|
|
|
+// userBalanceInvoiceDto.setNum(t.getWaybillNum());
|
|
|
+// userBalanceInvoiceDto.setTransactionId(t.getTransactionId());
|
|
|
+// //发送到消息队列
|
|
|
+// log.info("发送到消息队列");
|
|
|
+// chargeProducer.send(userBalanceInvoiceDto);
|
|
|
// 将需要计费数据插入数据库
|
|
|
UserDto userDto = userService.getUser(po.getUserId());
|
|
|
NeedChargeDto needChargeDto = new NeedChargeDto();
|
|
@@ -121,14 +123,26 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
|
|
|
needChargeDto.setPrice(userDto.getPrice());
|
|
|
needChargeDto.setTransactionId(t.getTransactionId());
|
|
|
needChargeService.saveNeedCharge(needChargeDto);
|
|
|
+
|
|
|
+ // 计费
|
|
|
+ UserBalanceDto userBalanceDto = userBalanceService.getUserBalance(po.getUserId());
|
|
|
+ userBalanceDto.setBalance(userBalanceDto.getBalance().subtract(userDto.getPrice()));
|
|
|
+ userBalanceService.updateUserBalance(userBalanceDto);
|
|
|
+
|
|
|
+ // 实际扣费数据
|
|
|
+ RealChargeDto realChargeDto = new RealChargeDto();
|
|
|
+ realChargeDto.setUserId(userBalanceDto.getUserId());
|
|
|
+ realChargeDto.setPrice(userDto.getPrice());
|
|
|
+ realChargeDto.setNum(po.getNum());
|
|
|
+ realChargeDto.setTransactionId(t.getTransactionId());
|
|
|
+ realChargeService.saveRealCharge(realChargeDto);
|
|
|
log.warn("计费日志:{},计费用户id:{}", JSON.toJSONString(t), po.getUserId());
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
// 遍历发票集合
|
|
|
invoiceResultDto.getResult().stream().forEach(t -> {
|
|
|
- t.setTransactionId(t.getTransactionId() + System.currentTimeMillis());
|
|
|
- log.info("遍历发票集合t + System.currentTimeMillis() = {}", t.getTransactionId());
|
|
|
+ t.setTransactionId(t.getTransactionId());
|
|
|
if (!redisTemplate.hasKey(CommonConstant.NUM_FIND_INVOICE_KEY + t.getInvoiceNum() + "_" + t.getInvoiceCode())) {
|
|
|
SearchInvoiceResultDto dto = new SearchInvoiceResultDto();
|
|
|
BeanUtil.copyProperties(dto, t);
|