diff --git a/src/main/java/com/example/demo/controller/cash/CashRefundController.java b/src/main/java/com/example/demo/controller/cash/CashRefundController.java index 8721d87..c9a6b09 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -373,13 +373,12 @@ public class CashRefundController { } cashRecordRefund.setStatus(20); - int resultCode = refundService.add(cashRecordRefund,lang); + refundService.add(cashRecordRefund, lang); String successMsg = languageTranslationUtil.translate("提交成功", lang); - if (resultCode > 0) { - translateCashRecordRefundFields(cashRecordRefund, lang); - } + translateCashRecordRefundFields(cashRecordRefund, lang); return Result.success(successMsg, cashRecordRefund); } catch (Exception e) { + log.error("addOnline error", e); String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } @@ -759,48 +758,50 @@ public class CashRefundController { * 将退款记录查询条件中的翻译字段转换为中文简体 */ private void convertTranslatedRefundFieldsToChinese(CashRecordRefund cashRecordRefund, String languageCode) { - if (cashRecordRefund != null) { - // 转换退款理由 - if (cashRecordRefund.getRefundReason() != null && !cashRecordRefund.getRefundReason().isEmpty()) { - String chineseReason = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getRefundReason(), languageCode); - cashRecordRefund.setRefundReason(chineseReason); - } + if (cashRecordRefund == null) { + return; + } - // 转换退款备注 - if (cashRecordRefund.getRefundRemark() != null && !cashRecordRefund.getRefundRemark().isEmpty()) { - String chineseRemark = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getRefundRemark(), languageCode); - cashRecordRefund.setRefundRemark(chineseRemark); - } + // 转换退款理由 + if (cashRecordRefund.getRefundReason() != null && !cashRecordRefund.getRefundReason().trim().isEmpty()) { + String chineseReason = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getRefundReason(), languageCode); + cashRecordRefund.setRefundReason(chineseReason); + } - // 转换退款途径 - if (cashRecordRefund.getRefundChannels() != null && !cashRecordRefund.getRefundChannels().isEmpty()) { - String chineseChannels = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getRefundChannels(), languageCode); - cashRecordRefund.setRefundChannels(chineseChannels); - } + // 转换退款备注 + if (cashRecordRefund.getRefundRemark() != null && !cashRecordRefund.getRefundRemark().trim().isEmpty()) { + String chineseRemark = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getRefundRemark(), languageCode); + cashRecordRefund.setRefundRemark(chineseRemark); + } - // 转换退款币种 - if (cashRecordRefund.getRefundCurrency() != null && !cashRecordRefund.getRefundCurrency().isEmpty()) { - String chineseCurrency = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getRefundCurrency(), languageCode); - cashRecordRefund.setRefundCurrency(chineseCurrency); - } + // 转换退款途径 + if (cashRecordRefund.getRefundChannels() != null && !cashRecordRefund.getRefundChannels().trim().isEmpty()) { + String chineseChannels = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getRefundChannels(), languageCode); + cashRecordRefund.setRefundChannels(chineseChannels); + } - // 转换所属地区 - if (cashRecordRefund.getMarketName() != null && !cashRecordRefund.getMarketName().isEmpty()) { - String chineseMarket = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getMarketName(), languageCode); - cashRecordRefund.setMarketName(chineseMarket); - } + // 转换退款币种 + if (cashRecordRefund.getRefundCurrency() != null && !cashRecordRefund.getRefundCurrency().trim().isEmpty()) { + String chineseCurrency = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getRefundCurrency(), languageCode); + cashRecordRefund.setRefundCurrency(chineseCurrency); + } - // 转换提交人地区 - if (cashRecordRefund.getSubmitterMarket() != null && !cashRecordRefund.getSubmitterMarket().isEmpty()) { - String chineseMarket = translationService.findChineseSimplifiedByTranslation( - cashRecordRefund.getSubmitterMarket(), languageCode); - cashRecordRefund.setSubmitterMarket(chineseMarket); - } + // 转换所属地区 + if (cashRecordRefund.getMarketName() != null && !cashRecordRefund.getMarketName().trim().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getMarketName(), languageCode); + cashRecordRefund.setMarketName(chineseMarket); + } + + // 转换提交人地区 + if (cashRecordRefund.getSubmitterMarket() != null && !cashRecordRefund.getSubmitterMarket().trim().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getSubmitterMarket(), languageCode); + cashRecordRefund.setSubmitterMarket(chineseMarket); } } diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index ced185b..fb719d6 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -19,12 +19,14 @@ import com.example.demo.mapper.coin.OperationLogMapper; import com.example.demo.mapper.coin.RefundMapper; import com.example.demo.service.Wallet.WalletService; import com.example.demo.service.cash.RefundService; +import com.example.demo.service.coin.TranslationService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestHeader; import com.example.demo.domain.DTO.Currency; @@ -67,6 +69,8 @@ public class CashRefundServiceImpl implements RefundService { private LanguageTranslationUtil languageTranslationUtil; @Autowired private WalletService walletService; + @Autowired + private TranslationService translationService; @Override public PageInfo select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { @@ -176,54 +180,81 @@ public class CashRefundServiceImpl implements RefundService { @Override public int add(CashRecordRefund cashRecordRefund, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { - if (cashRecordRefund.getJwcode() == null) { - throw new Exception("未输入精网号"); - } - if (cashRecordRefund.getRefundModel() == null) { - throw new Exception("请填充退款类型"); - } - if (cashRecordRefund.getRefundReason() == null) { - throw new Exception("请填写退款理由"); - } - if (cashRecordRefund.getHandlingCharge() == null) { - throw new Exception("请先填写手续费"); - } - CashRecordDone cashRecordDonetwo = new CashRecordDone(); - cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); - cashRefundMapper.addAudit(cashRecordDonetwo); - cashRecordRefund.setAuditId(cashRecordDonetwo.getId()); - - cashRecordRefund.setStatus(10); - //生成订单号后半部分 - String orderNumber = cashRecordRefund.getOrderCode(); - //构建订单信息 - cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号 - cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket())))); - cashRefundMapper.insert(cashRecordRefund); - CashRecordDone cashRecordDone1 = new CashRecordDone(); - cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId()); - cashRecordDone1.setStatus(6); - if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) - cashRefundMapper.updateStatus(cashRecordDone1); - else return Result.error("提交失败").getCode(); - - // 发送退款创建消息 - Messages message = new Messages(); - message.setJwcode(cashRecordRefund.getJwcode()); - message.setName(cashRecordRefund.getName()); - message.setStatus(cashRecordRefund.getStatus()); - message.setDesc("的客服退款申请待审核,前往处理"); - message.setTitle("现金退款--新增退款"); - message.setType(0); - message.setTypeId(cashRecordRefund.getId()); - message.setMarket(Integer.valueOf(cashRecordRefund.getMarket())); - String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); - message.setMarketName(marketName); - message.setQueryId(103); - rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); - - return Result.success("提交成功").getCode(); + try { + if (cashRecordRefund.getJwcode() == null) { + throw new Exception("未输入精网号"); + } + if (cashRecordRefund.getRefundModel() == null) { + throw new Exception("请填充退款类型"); + } + if (cashRecordRefund.getRefundReason() == null) { + throw new Exception("请填写退款理由"); + } + if (cashRecordRefund.getHandlingCharge() == null) { + throw new Exception("请先填写手续费"); + } + if (cashRecordRefund.getMarket() == null || cashRecordRefund.getMarket().trim().isEmpty()) { + throw new Exception("请选择所属地区"); + } + + CashRecordDone cashRecordDonetwo = new CashRecordDone(); + cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); + cashRefundMapper.addAudit(cashRecordDonetwo); + cashRecordRefund.setAuditId(cashRecordDonetwo.getId()); + + cashRecordRefund.setStatus(10); + //生成订单号后半部分 + String orderNumber = cashRecordRefund.getOrderCode(); + //构建订单信息 + cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号 + + // 查询市场 ID,增加空值检查和多语言支持 + String marketName = cashRecordRefund.getMarket(); + String marketId = marketMapper.getMarketId(marketName); + + // 如果直接查询失败,尝试将英文名称转换为中文后再次查询 + if (marketId == null || marketId.trim().isEmpty()) { + String chineseMarketName = translationService.findChineseSimplifiedByTranslation(marketName, "en"); + if (chineseMarketName != null && !chineseMarketName.equals(marketName)) { + marketId = marketMapper.getMarketId(chineseMarketName); + } + } + + if (marketId == null || marketId.trim().isEmpty()) { + throw new Exception("无效的所属地区:" + cashRecordRefund.getMarket()); + } + cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketId))); + + cashRefundMapper.insert(cashRecordRefund); + CashRecordDone cashRecordDone1 = new CashRecordDone(); + cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId()); + cashRecordDone1.setStatus(6); + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) { + cashRefundMapper.updateStatus(cashRecordDone1); + } else { + return Result.error("提交失败").getCode(); + } + // 发送退款创建消息 + Messages message = new Messages(); + message.setJwcode(cashRecordRefund.getJwcode()); + message.setName(cashRecordRefund.getName()); + message.setStatus(cashRecordRefund.getStatus()); + message.setDesc("的客服退款申请待审核,前往处理"); + message.setTitle("现金退款--新增退款"); + message.setType(0); + message.setTypeId(cashRecordRefund.getId()); + message.setMarket(Integer.valueOf(cashRecordRefund.getMarket())); + String marketName2 = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(marketName2); + message.setQueryId(103); + rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); + + return Result.success("提交成功").getCode(); + } catch (Exception e) { + log.error("add error", e); + throw e; + } } @Override @@ -673,34 +704,67 @@ public class CashRefundServiceImpl implements RefundService { } @Override + @Transactional public void addOnline(CashRecordRefund cashRecordRefund) { - if (cashRecordRefund.getJwcode() == null) { - throw new BusinessException("未输入精网号"); - } - if (cashRecordRefund.getRefundModel() == null) { - throw new BusinessException("请填充退款类型"); - } - if (cashRecordRefund.getRefundReason() == null) { - throw new BusinessException("请填写退款理由"); - } - CashRecordDone cashRecordDonetwo = new CashRecordDone(); - cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); - cashRefundMapper.addAudit(cashRecordDonetwo); - cashRecordRefund.setAuditId(cashRecordDonetwo.getId()); - - cashRecordRefund.setStatus(20); - //生成订单号后半部分 - String orderNumber = cashRecordRefund.getOrderCode(); - //构建订单信息 - cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号 - cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket())))); - cashRefundMapper.insert(cashRecordRefund); - CashRecordDone cashRecordDone1 = new CashRecordDone(); - cashRecordDone1.setId(cashRecordRefund.getId()); - cashRecordDone1.setStatus(6); - if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) - cashRefundMapper.updateStatus(cashRecordDone1); - else throw new SystemException("提交失败"); + try { + if (cashRecordRefund.getJwcode() == null) { + throw new BusinessException("未输入精网号"); + } + if (cashRecordRefund.getRefundModel() == null) { + throw new BusinessException("请填充退款类型"); + } + if (cashRecordRefund.getRefundReason() == null) { + throw new BusinessException("请填写退款理由"); + } + if (cashRecordRefund.getMarket() == null || cashRecordRefund.getMarket().trim().isEmpty()) { + throw new BusinessException("请选择所属地区"); + } + + CashRecordDone cashRecordDonetwo = new CashRecordDone(); + cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise()); + cashRefundMapper.addAudit(cashRecordDonetwo); + cashRecordRefund.setAuditId(cashRecordDonetwo.getId()); + + cashRecordRefund.setStatus(20); + //生成订单号后半部分 + String orderNumber = cashRecordRefund.getOrderCode(); + //构建订单信息 + cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号 + + // 查询市场 ID,增加空值检查 + String marketName = cashRecordRefund.getMarket(); + + // 如果传入的是英文名称,需要转换为中文名称再查询 + String marketId = marketMapper.getMarketId(marketName); + if (marketId == null || marketId.trim().isEmpty()) { + // 尝试将英文名称转换为中文后再次查询 + String chineseMarketName = translationService.findChineseSimplifiedByTranslation(marketName, "en"); + if (chineseMarketName != null && !chineseMarketName.equals(marketName)) { + marketId = marketMapper.getMarketId(chineseMarketName); + } + } + + if (marketId == null || marketId.trim().isEmpty()) { + throw new BusinessException("无效的所属地区:" + cashRecordRefund.getMarket()); + } + cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketId))); + + cashRefundMapper.insert(cashRecordRefund); + + CashRecordDone cashRecordDone1 = new CashRecordDone(); + cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId()); + cashRecordDone1.setStatus(6); + if (cashRecordDone1.getId() != null || cashRecordDone1.getOrderCode() != null) { + cashRefundMapper.updateStatus(cashRecordDone1); + } else { + throw new SystemException("提交失败"); + } + } catch (BusinessException | SystemException e) { + throw e; + } catch (Exception e) { + log.error("addOnline error", e); + throw new SystemException("提交失败:" + e.getMessage()); + } } @Override diff --git a/src/main/java/com/example/demo/serviceImpl/coin/TranslationServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/TranslationServiceImpl.java index 325f5da..d7975ed 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/TranslationServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/TranslationServiceImpl.java @@ -98,7 +98,12 @@ public class TranslationServiceImpl implements TranslationService { @Override public String findChineseSimplifiedByTranslation(String translatedText, String language) { // 处理空值情况 - if (translatedText == null || translatedText.isEmpty()) { + if (translatedText == null) { + return null; + } + + // 处理空字符串 + if (translatedText.trim().isEmpty()) { return translatedText; }