You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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.Messages;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;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Arrays;import java.util.List;
/** * @program: GOLD * @ClassName MessageController * @description: * @author: huangqizhen * @create: 2025−11−14 22:12 * @Version 1.0 **/@RestController@RequestMapping("/getMessage")@RequiredArgsConstructor@Slf4j@CrossOriginpublic class MessageController { @Autowired private MessageService messageService; @Autowired private MarketService marketService; @Autowired private LanguageTranslationUtil languageTranslationUtil; @Autowired private TranslationService translationService;
@PostMapping 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 获取用户信息
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)) { List<com.example.demo.domain.vo.coin.Messages> messages = messageService.getMessage(markets, status.getStatus()); convertTranslatedFieldsToChinese((Messages) messages, languageCode); }
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) { markets = null; }
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, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { try { Integer id = idRequest.getId(); messageService.update(id); return Result.success(); } catch (Exception e) { 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(Messages messages, String languageCode) { if (messages != null) { // 翻译标题
if (messages.getTitle() != null && !messages.getTitle().isEmpty()) { messages.setTitle(languageTranslationUtil.translate(messages.getTitle(), languageCode)); } // 翻译描述
if (messages.getDesc() != null && !messages.getDesc().isEmpty()) { messages.setDesc(languageTranslationUtil.translate(messages.getDesc(), languageCode)); } // 翻译市场名称
if (messages.getMarketName() != null && !messages.getMarketName().isEmpty()) { messages.setMarketName(languageTranslationUtil.translate(messages.getMarketName(), languageCode)); } } }}
|