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.coin;
import com.example.demo.config.interfac.Log;import com.example.demo.domain.DTO.TranslationQueryRequest;import com.example.demo.domain.entity.Translation;import com.example.demo.domain.vo.coin.Result;import com.example.demo.service.coin.TranslationService;import com.example.demo.Util.LanguageTranslationUtil;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.*;
import java.util.HashMap;import java.util.List;import java.util.Map;
@RestController@RequestMapping("/language")@RequiredArgsConstructor@Slf4j@CrossOriginpublic class TranslationController {
private final TranslationService translationService; private final LanguageTranslationUtil languageTranslationUtil;
// 查询所有翻译记录(可加条件)
@PostMapping("/getTranslation") public Result getTranslations(@RequestBody TranslationQueryRequest request) { try { // 设置分页参数
PageHelper.startPage(request.getPageNum(), request.getPageSize());
String chineseSimplified = request.getChineseSimplified(); String languageStatus = request.getLanguageStatus();
List<Translation> translations;
if (chineseSimplified != null && !chineseSimplified.isEmpty() && languageStatus != null && !languageStatus.isEmpty()) { // 同时存在模糊查询和语言状态查询
String[] parts = languageStatus.split("/"); if (parts.length != 2) { return Result.error("languageStatus 参数格式错误,应为 'language/isTranslated'"); } String language = parts[0]; boolean isTranslated = Boolean.parseBoolean(parts[1]); translations = translationService.findByChineseSimplifiedAndLanguageStatus( chineseSimplified, language, isTranslated); } else if (chineseSimplified != null && !chineseSimplified.isEmpty()) { // 只进行模糊查询
translations = translationService.findByChineseSimplifiedLike(chineseSimplified); } else if (languageStatus != null && !languageStatus.isEmpty()) { // 只进行语言状态查询
String[] parts = languageStatus.split("/"); if (parts.length != 2) { return Result.error("languageStatus 参数格式错误,应为 'language/isTranslated'"); } String language = parts[0]; boolean isTranslated = Boolean.parseBoolean(parts[1]); translations = translationService.findByLanguageAndTranslationStatus(language, isTranslated); } else { // 查询所有
translations = translationService.findAll(); }
// 使用 PageInfo 封装分页结果
PageInfo<Translation> pageInfo = new PageInfo<>(translations);
// 构造返回数据
Map<String, Object> resultData = new HashMap<>(); resultData.put("list", pageInfo.getList()); resultData.put("total", pageInfo.getTotal()); resultData.put("pageNum", pageInfo.getPageNum()); resultData.put("pageSize", pageInfo.getPageSize());
return Result.success(resultData); } catch (IllegalArgumentException e) { return Result.error("参数错误:" + e.getMessage()); } catch (Exception e) { log.error("查询翻译记录失败", e); return Result.error("查询翻译记录失败"); } }
// 添加新的翻译记录
@Log("添加翻译记录") @PostMapping("/addTranslation") public Result addTranslation(@RequestBody Translation translation) { try { boolean result = translationService.add(translation); if (result) { return Result.success("添加翻译记录成功"); } else { return Result.error("添加翻译记录失败"); } } catch (RuntimeException e) { // 捕获重复插入异常
if ("简体中文已存在".equals(e.getMessage())) { return Result.error("添加翻译记录失败:简体中文已存在"); } else { log.error("添加翻译记录失败", e); return Result.error("添加翻译记录失败"); } } }
// 更新翻译记录
@Log("更新翻译记录") @PostMapping("/updateTranslation") public Result updateTranslation(@RequestBody Translation translation) { try { boolean result = translationService.update(translation); if (result) { // 更新成功后刷新缓存
languageTranslationUtil.refreshAllCache(); return Result.success("更新翻译记录成功"); } else { return Result.error("更新翻译记录失败"); } } catch (Exception e) { log.error("更新翻译记录失败", e); return Result.error("更新翻译记录失败"); } }
// 删除翻译记录
@Log("删除翻译记录") @PostMapping("/deleteTranslation") public Result deleteTranslation(@RequestBody Translation request) { try { // 先获取要删除的记录,用于后续清理缓存
Translation translationToDelete = translationService.findById(request.getId());
boolean result = translationService.deleteById(request.getId()); if (result) { // 删除成功后清理相关缓存
if (translationToDelete != null) { languageTranslationUtil.removeFromCache(translationToDelete.getChineseSimplified()); } return Result.success("删除翻译记录成功"); } else { return Result.error("删除翻译记录失败"); } } catch (Exception e) { log.error("删除翻译记录失败", e); return Result.error("删除翻译记录失败"); } }
}
|