Browse Source

1月15日,消息推送的多语言翻译

milestone-20260113-现金管理0109
wangguorui 1 day ago
parent
commit
014a8a4e2a
  1. 8
      src/main/java/com/example/demo/controller/cash/CashCollectionController.java
  2. 10
      src/main/java/com/example/demo/controller/cash/CashRefundController.java
  3. 87
      src/main/java/com/example/demo/controller/cash/MessageController.java
  4. 2
      src/main/java/com/example/demo/controller/coin/ExportController.java
  5. 6
      src/main/java/com/example/demo/service/cash/CashCollectionService.java
  6. 8
      src/main/java/com/example/demo/service/cash/RefundService.java
  7. 26
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  8. 36
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

8
src/main/java/com/example/demo/controller/cash/CashCollectionController.java

@ -78,7 +78,7 @@ public class CashCollectionController {
convertTranslatedFieldsToChinese(cashCollection, languageCode);
}
String result = cashCollectionService.add(cashCollection);
String result = cashCollectionService.add(cashCollection,lang);
String successMsg = languageTranslationUtil.translate(result, lang);
return Result.success(successMsg);
} catch (Exception e) {
@ -88,9 +88,9 @@ public class CashCollectionController {
}
//新增赠送免费金币
@PostMapping("/addFreeCoin")
public Result addFreeCoin(@RequestBody CashCollection cashCollection) {
public Result addFreeCoin(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) {
try {
return Result.success(cashCollectionService.addFreeCoin(cashCollection));
return Result.success(cashCollectionService.addFreeCoin(cashCollection, lang));
} catch (Exception e) {
return Result.error(e.getMessage());
}
@ -120,7 +120,7 @@ public class CashCollectionController {
convertTranslatedRecordFieldsToChinese(cashRecord, languageCode);
}
String result = cashCollectionService.reSubmit(cashRecord);
String result = cashCollectionService.reSubmit(cashRecord, lang);
String successMsg = languageTranslationUtil.translate(result, lang);
return Result.success(successMsg);
} catch (Exception e) {

10
src/main/java/com/example/demo/controller/cash/CashRefundController.java

@ -141,7 +141,7 @@ public class CashRefundController {
}
cashRecordRefund.setStatus(10);
int resultCode = refundService.add(cashRecordRefund);
int resultCode = refundService.add(cashRecordRefund, lang);
String successMsg = languageTranslationUtil.translate("提交成功", lang);
return Result.success(successMsg);
} catch (Exception e) {
@ -252,7 +252,7 @@ public class CashRefundController {
}
else if (cashRecordDone.getStatus() == 11) {
try {
int result = refundService.update(cashRecordDone);
int result = refundService.update(cashRecordDone, lang);
String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("操作失败", lang);
return Result.success(msg);
} catch (Exception e) {
@ -274,7 +274,7 @@ public class CashRefundController {
@PostMapping("/review")
public Result review(@RequestBody CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang){
try {
int result = refundService.review(cashRecordDone);
int result = refundService.review(cashRecordDone, lang);
String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("操作失败", lang);
return Result.success(msg);
} catch (Exception e) {
@ -310,7 +310,7 @@ public class CashRefundController {
try {
// 原有业务逻辑执行最终审核
int result = refundService.finalreview(cashRecordDone);
int result = refundService.finalreview(cashRecordDone, lang);
String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("审核失败", lang);
return Result.success(msg);
} catch (Exception e) {
@ -350,7 +350,7 @@ public class CashRefundController {
}
cashRecordRefund.setStatus(20);
int resultCode = refundService.add(cashRecordRefund);
int resultCode = refundService.add(cashRecordRefund,lang);
String successMsg = languageTranslationUtil.translate("提交成功", lang);
return Result.success(successMsg);
} catch (Exception e) {

87
src/main/java/com/example/demo/controller/cash/MessageController.java

@ -1,12 +1,14 @@
package com.example.demo.controller.cash;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.LanguageTranslationUtil;
import com.example.demo.domain.DTO.IdRequest;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.cash.Status;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.cash.MessageService;
import com.example.demo.service.coin.MarketService;
import com.example.demo.service.coin.TranslationService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -25,7 +27,7 @@ import java.util.List;
* @ClassName MessageController
* @description:
* @author: huangqizhen
* @create: 202511-14 22:12
* @create: 20251114 22:12
* @Version 1.0
**/
@RestController
@ -38,31 +40,100 @@ public class MessageController {
private MessageService messageService;
@Autowired
private MarketService marketService;
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
@Autowired
private TranslationService translationService;
@PostMapping
public Result getMessage(@RequestBody Status status) throws Exception {
public Result getMessage(@RequestBody Status status, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
// 权限校验逻辑
// 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
convertTranslatedFieldsToChinese(status, languageCode);
}
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) {
markets=null;
markets = null;
}
return Result.success(messageService.getMessage(markets, status.getStatus()));
List<com.example.demo.domain.vo.coin.Messages> messages = messageService.getMessage(markets, status.getStatus());
// 对返回结果进行多语言转换
translateMessages(messages, lang);
return Result.success(messages);
}
@PostMapping("/update")
public Result update(@RequestBody IdRequest idRequest) throws Exception {
public Result update(@RequestBody IdRequest idRequest, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
try {
Integer id = idRequest.getId();
messageService.update(id);
return Result.success();
}
catch (Exception e) {
return Result.error("更新失败");
String errorMsg = languageTranslationUtil.translate("更新失败", lang);
return Result.error(errorMsg);
}
}
/**
* 转换消息列表的多语言字段
*/
private void translateMessages(List<com.example.demo.domain.vo.coin.Messages> messages, String lang) {
if (messages != null && !messages.isEmpty()) {
for (com.example.demo.domain.vo.coin.Messages message : messages) {
// 翻译标题
if (message.getTitle() != null && !message.getTitle().isEmpty()) {
message.setTitle(languageTranslationUtil.translate(message.getTitle(), lang));
}
// 翻译描述
if (message.getDesc() != null && !message.getDesc().isEmpty()) {
message.setDesc(languageTranslationUtil.translate(message.getDesc(), lang));
}
// 翻译市场名称
if (message.getMarketName() != null && !message.getMarketName().isEmpty()) {
message.setMarketName(languageTranslationUtil.translate(message.getMarketName(), lang));
}
}
}
}
/**
* 解析语言代码
*/
private String parseLanguageCode(String langHeader) {
if (langHeader == null || langHeader.isEmpty()) {
return "zh";
}
// 处理类似 "en-US" "zh-TW" 的情况
if (langHeader.contains("-")) {
String[] parts = langHeader.split("-");
// 特殊处理中文繁体
if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) {
return "zh_TW";
}
return parts[0].toLowerCase();
}
return langHeader.toLowerCase();
}
/**
* 将查询条件中的翻译字段转换为中文简体
*/
private void convertTranslatedFieldsToChinese(Status status, String languageCode) {
if (status != null) {
// 如果状态相关的字段需要翻译可以在这里处理
// 目前 Status 类中主要是状态码一般不需要翻译
}
}
}

2
src/main/java/com/example/demo/controller/coin/ExportController.java

@ -50,8 +50,6 @@ public class ExportController {
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private GoldDetailService goldDetailService;
@Autowired
private ExportService exportService;
@Autowired
private TranslationService translationService;

6
src/main/java/com/example/demo/service/cash/CashCollectionService.java

@ -23,13 +23,13 @@ import java.util.List;
public interface CashCollectionService {
//新增收款订单
String add(CashCollection cashCollection);
String add(CashCollection cashCollection,String lang);
//赠送免费金币
String addFreeCoin(CashCollection cashCollection);
String addFreeCoin(CashCollection cashCollection,String lang);
//撤回未审核的收款订单
String cancel(String orderCode);
//编辑并重新提交收款订单
String reSubmit(CashRecord cashRecord);
String reSubmit(CashRecord cashRecord,String lang);
//多条件查询收款订单列表
PageInfo<CashCollection> selectCollection(Integer pageNum, Integer pageSize, CashCollection cashCollection);
//补全手续费等

8
src/main/java/com/example/demo/service/cash/RefundService.java

@ -18,19 +18,19 @@ public interface RefundService {
//多条件查询(qi'yong)
PageInfo<CashRecordDTO> select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO);
//添加
int add(CashRecordRefund cashRecordRefund) throws Exception;
int add(CashRecordRefund cashRecordRefund, String lang) throws Exception;
//修改
int update(CashRecordDone cashRecordDone) throws Exception;
int update(CashRecordDone cashRecordDone, String lang) throws Exception;
//
int withdraw(CashRecordDone cashRecordDone);
//审核
int review(CashRecordDone cashRecordDone) throws Exception;
int review(CashRecordDone cashRecordDone, String lang) throws Exception;
// 执行
int executor(CashRecordDone cashRecordDone) throws Exception;
//修改原数据状态
int updateStatus(CashRecordDone cashRecordDone);
int finalreview(CashRecordDone cashRecordDone);
int finalreview(CashRecordDone cashRecordDone, String lang);
PageInfo<CashRecordDTO> financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO);
PageInfo<CashRecordDTO> exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO);

26
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -1,6 +1,7 @@
package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.LanguageTranslationUtil;
import com.example.demo.config.RabbitMQConfig;
import com.example.demo.domain.DTO.PerformanceDTO;
import com.example.demo.domain.entity.*;
@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@ -54,10 +56,12 @@ public class CashCollectionServiceImpl implements CashCollectionService {
private MarketMapper marketMapper;
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
//新增收款订单
@Override
public String add(CashCollection cashCollection) {
public String add(CashCollection cashCollection,@RequestHeader(defaultValue = "zh_CN") String lang) {
if (cashCollection.getJwcode() == null) {
throw new IllegalArgumentException("精网号不能为空");
}
@ -135,17 +139,19 @@ public class CashCollectionServiceImpl implements CashCollectionService {
message.setJwcode(cashRecord.getJwcode());
message.setName(cashRecord.getName());
message.setStatus(cashRecord.getStatus());
message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核");
message.setTitle("现金收款--新增收款");
message.setDesc(cashRecord.getJwcode()+languageTranslationUtil.translate("用户的现金收款申请待审核,请前往审核", lang));
message.setTitle(languageTranslationUtil.translate("现金收款--新增收款", lang));
message.setType(1);
message.setTypeId(cashRecord.getId());
message.setMarket(Integer.valueOf(cashRecord.getMarket()));
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, lang));
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message);
return "添加成功";
}
@Override
public String addFreeCoin(CashCollection cashCollection) {
public String addFreeCoin(CashCollection cashCollection,@RequestHeader(defaultValue = "zh_CN") String lang) {
if (cashCollection.getJwcode() == null) {
throw new IllegalArgumentException("精网号不能为空");
}
@ -186,11 +192,13 @@ public class CashCollectionServiceImpl implements CashCollectionService {
message.setJwcode(cashRecord.getJwcode());
message.setName(cashRecord.getName());
message.setStatus(cashRecord.getStatus());
message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核");
message.setTitle("现金收款--赠送免费金币");
message.setDesc(cashRecord.getJwcode()+languageTranslationUtil.translate("用户的现金收款申请待审核,请前往审核", lang));
message.setTitle(languageTranslationUtil.translate("现金收款--赠送免费金币", lang));
message.setType(1);
message.setTypeId(cashRecord.getId());
message.setMarket(Integer.valueOf(cashRecord.getMarket()));
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, lang));
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message);
return "添加成功";
}
@ -213,7 +221,7 @@ public class CashCollectionServiceImpl implements CashCollectionService {
//编辑并重新提交收款订单
@Override
public String reSubmit(CashRecord cashRecord) {
public String reSubmit(CashRecord cashRecord,@RequestHeader(defaultValue = "zh_CN") String lang) {
if (cashRecord.getJwcode() == null) {
throw new IllegalArgumentException("精网号不能为空");
}
@ -272,8 +280,8 @@ public class CashCollectionServiceImpl implements CashCollectionService {
message.setId(cashRecord.getId());
message.setOrderCode(cashRecord.getOrderCode());
message.setStatus(0); // 重新提交后状态变为待审核
message.setStatusDescription("线下财务待审核");
message.setMessage("收款订单已重新提交");
message.setStatusDescription(languageTranslationUtil.translate("线下财务待审核", lang));
message.setMessage(languageTranslationUtil.translate("收款订单已重新提交", lang));
message.setSubmitterId(cashRecord.getSubmitterId());
message.setTimestamp(LocalDateTime.now());

36
src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

@ -1,4 +1,5 @@
package com.example.demo.serviceImpl.cash;
import com.example.demo.Util.LanguageTranslationUtil;
import com.example.demo.Util.SimpleIdGenerator;
import com.example.demo.domain.entity.Admin;
import com.example.demo.Util.BusinessException;
@ -23,6 +24,7 @@ import com.github.pagehelper.PageInfo;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestHeader;
import java.math.BigDecimal;
import java.math.RoundingMode;
@ -59,6 +61,8 @@ public class CashRefundServiceImpl implements RefundService {
private OperationLogMapper operationLogMapper;
@Autowired
private CashCollectionMapper cashCollectionMapper;
@Autowired
private LanguageTranslationUtil languageTranslationUtil;
@Override
public PageInfo<CashRecordDTO> select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
@ -168,7 +172,7 @@ public class CashRefundServiceImpl implements RefundService {
}
@Override
public int add(CashRecordRefund cashRecordRefund) throws Exception {
public int add(CashRecordRefund cashRecordRefund, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
if(cashRecordRefund.getJwcode()==null){
throw new Exception("未输入精网号") ;
}
@ -205,11 +209,13 @@ public class CashRefundServiceImpl implements RefundService {
message.setJwcode(cashRecordRefund.getJwcode());
message.setName(cashRecordRefund.getName());
message.setStatus(cashRecordRefund.getStatus());
message.setDesc(cashRecordRefund.getJwcode()+"用户的客服退款申请待审核,前往处理");
message.setTitle("现金退款--新增退款");
message.setDesc(cashRecordRefund.getJwcode()+languageTranslationUtil.translate("用户的客服退款申请待审核,前往处理", lang));
message.setTitle(languageTranslationUtil.translate("现金退款--新增退款", lang));
message.setType(0);
message.setTypeId(cashRecordRefund.getId());
message.setMarket(Integer.valueOf(cashRecordRefund.getMarket()));
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, lang));
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message);
return Result.success("提交成功").getCode();
@ -217,7 +223,7 @@ public class CashRefundServiceImpl implements RefundService {
}
@Override
public int update(CashRecordDone cashRecordDone) throws Exception {
public int update(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
if (cashRecordDone.getJwcode()== null) {
throw new RuntimeException("未输入精网号");
}
@ -247,11 +253,13 @@ public class CashRefundServiceImpl implements RefundService {
message.setJwcode(cashRecordDTO.getJwcode());
message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode() + "用户的退款申请待审核,前往处理");
message.setTitle("现金退款--当地退款审核(编辑后提交)");
message.setDesc(cashRecordDTO.getJwcode() + languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang));
message.setTitle(languageTranslationUtil.translate("现金退款--当地退款审核(编辑后提交)", lang));
message.setType(1);
message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket());
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, lang));
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message);
}
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
@ -263,7 +271,7 @@ public class CashRefundServiceImpl implements RefundService {
}
@Override
public int review(CashRecordDone cashRecordDone) throws Exception {
public int review(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){
if(cashRecordDone.getOrderCode()== null){
throw new RuntimeException("未输入订单号");
@ -284,11 +292,13 @@ CashRecordDone cashRecordDone1 = new CashRecordDone();
message.setJwcode(cashRecordDTO.getJwcode());
message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=12|| cashRecordDTO.getStatus()!=22?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情");
message.setTitle("现金退款--当地退款审核");
message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=12|| cashRecordDTO.getStatus()!=22?languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang):languageTranslationUtil.translate("用户的现金退款申请已被驳回,前往查看详情", lang));
message.setTitle(languageTranslationUtil.translate("现金退款--当地退款审核", lang));
message.setType(1);
message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket());
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, lang));
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message);
@ -327,7 +337,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone();
}
@Override
public int finalreview(CashRecordDone cashRecordDone) {
public int finalreview(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) {
if(cashRecordDone.getPermanentGold()== null){
cashRecordDone.setPermanentGold(0);
}
@ -392,11 +402,13 @@ CashRecordDone cashRecordDone1 = new CashRecordDone();
message.setJwcode(cashRecordDTO.getJwcode());
message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=32?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情");
message.setTitle("现金退款--执行人退款提交");
message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=32?languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang):languageTranslationUtil.translate("用户的现金退款申请已被驳回,前往查看详情", lang));
message.setTitle(languageTranslationUtil.translate("现金退款--执行人退款提交", lang));
message.setType(1);
message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket());
String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket()));
message.setMarketName(languageTranslationUtil.translate(marketName, "zh_CN"));
}
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();

Loading…
Cancel
Save