|
|
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;import com.example.demo.Util.LanguageTranslationUtil;import com.example.demo.config.interfac.Log;import com.example.demo.domain.entity.Admin;import com.example.demo.service.coin.RefundService;import com.example.demo.service.coin.TranslationService;import com.github.pagehelper.PageInfo;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.util.ObjectUtils;import org.springframework.web.bind.annotation.*;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.example.demo.domain.vo.coin.*;import java.util.Arrays;import java.util.List;
/** * @program: gold-java * @ClassName RefundMapper.xml * @description: * @author: Double * @create: 2025−06-26 11:28 * @Version 1.0 **/
@RestController@RequestMapping("/refund")@RequiredArgsConstructor@Slf4j@CrossOriginpublic class RefundController {
@Autowired private RefundService refundService;
// 注入 TranslationService
@Autowired private TranslationService translationService;
// 注入多语言转换工具类
@Autowired private LanguageTranslationUtil languageTranslationUtil;
//退款明细
@Log("获取全部退款明细") @PostMapping("/selectAll") public Result selectAll(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) { try { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(page.getRefundUser(), languageCode); }
if (ObjectUtils.isEmpty(page.getPageNum())) { String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); return Result.error(errorMsg); } if (ObjectUtils.isEmpty(page.getPageSize())) { String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); return Result.error(errorMsg); } else { //解token权限
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); if (admin != null) { List<String> list = Arrays.asList(admin.getMarkets().split(",")); page.getRefundUser().setMarkets(list); } else { String errorMsg = languageTranslationUtil.translate("角色为空", lang); return Result.error(errorMsg); } Result result = Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
// 对返回结果进行多语言转换
if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo<RefundUser> pageInfo = (PageInfo<RefundUser>) result.getData(); translateRefundUsers(pageInfo, lang); }
return result; } } catch (Exception e) { String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); return Result.error(errorMsg); }
}
//退款筛选
@Log("退款明细筛选") @PostMapping("/selectBy") public Result selectBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) { try { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(page.getRefundUser(), languageCode); }
if (ObjectUtils.isEmpty(page.getPageNum())) { String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); return Result.error(errorMsg); } if (ObjectUtils.isEmpty(page.getPageSize())) { String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); return Result.error(errorMsg); } else { //解token权限
if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); page.getRefundUser().setMarkets(markets); } Result result = Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); // 对返回结果进行多语言转换
if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo<RefundUser> pageInfo = (PageInfo<RefundUser>) result.getData(); translateRefundUsers(pageInfo, lang); } return result; } } catch (Exception e) { String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); return Result.error(errorMsg); }
}
//退款金币统计
@Log("退款金币合计数统计") @PostMapping("/statsGold") public Result statsGold(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) { try { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(refundUser, languageCode); }
//解token权限
if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); refundUser.setMarkets(markets); } Gold gold = refundService.statsGold(refundUser); return Result.success(gold); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate("请检查数据的格式", lang); return Result.error(errorMsg); } }
//获取退款类型
@Log("获取退款类型") @PostMapping("/refundType") public Result getRefundType(@RequestHeader(defaultValue = "zh") String lang) { // 解析语言代码
String languageCode = parseLanguageCode(lang);
List<String> list = refundService.getRefundType(lang);
// 如果不是中文环境,先将翻译后的退款类型转换为中文简体进行处理
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedRefundTypesToChinese(list, languageCode); }
// 对退款类型进行多语言转换
translateRefundTypes(list, lang); return Result.success(list); }
//筛选产品
// @Log("筛选商品")
@PostMapping("/selectGoods") public Result getSelectGoods(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(refundUser, languageCode); }
List<RefundUser> list = refundService.selectGoods(refundUser, lang); return Result.success(list); }
//消耗金币退款
@Log("新增金币退款") @PostMapping("/add") public Result add(@RequestBody RefundUser refundUser, @RequestHeader(defaultValue = "zh") String lang) { try { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(refundUser, languageCode); }
return refundService.add(refundUser, lang); } catch (Exception e) { e.printStackTrace(); String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } }
public Result select(@RequestBody Page page, @RequestHeader(defaultValue = "zh") String lang) { try { // 解析语言代码
String languageCode = parseLanguageCode(lang);
// 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertRefundTranslatedFieldsToChinese(page.getRefundUser(), languageCode); }
if (ObjectUtils.isEmpty(page.getPageNum())) { String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); return Result.error(errorMsg); } if (ObjectUtils.isEmpty(page.getPageSize())) { String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); return Result.error(errorMsg); } else { Result result = Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
// 对返回结果进行多语言转换
if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo<RefundUser> pageInfo = (PageInfo<RefundUser>) result.getData(); translateRefundUsers(pageInfo, lang); }
return result; } } catch (Exception e) { e.printStackTrace(); String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); return Result.error(errorMsg); }
}
/** * 解析语言代码 */ 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 convertRefundTranslatedFieldsToChinese(RefundUser refundUser, String languageCode) { if (refundUser != null) { // 转换市场名称
if (refundUser.getMarket() != null && !refundUser.getMarket().isEmpty()) { String chineseMarket = translationService.findChineseSimplifiedByTranslation( refundUser.getMarket(), languageCode); refundUser.setMarket(chineseMarket); }
// 转换商品名称
if (refundUser.getGoodsName() != null && !refundUser.getGoodsName().isEmpty()) { String chineseGoodsName = translationService.findChineseSimplifiedByTranslation( refundUser.getGoodsName(), languageCode); refundUser.setGoodsName(chineseGoodsName); }
// 转换退款类型
if (refundUser.getRefundType() != null && !refundUser.getRefundType().isEmpty()) { String chineseRefundType = translationService.findChineseSimplifiedByTranslation( refundUser.getRefundType(), languageCode); refundUser.setRefundType(chineseRefundType); } } }
/** * 将翻译后的退款类型转换为中文简体 */ private void convertTranslatedRefundTypesToChinese(List<String> refundTypes, String languageCode) { if (refundTypes != null && !refundTypes.isEmpty()) { for (int i = 0; i < refundTypes.size(); i++) { String chineseType = translationService.findChineseSimplifiedByTranslation( refundTypes.get(i), languageCode); refundTypes.set(i, chineseType); } } }
/** * 转换退款用户信息的多语言字段 */ private void translateRefundUsers(PageInfo<RefundUser> pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (RefundUser user : pageInfo.getList()) { // 翻译市场名称
if (user.getMarket() != null) { user.setMarket(languageTranslationUtil.translate(user.getMarket(), lang)); } // 翻译商品名称
if (user.getGoodsName() != null) { user.setGoodsName(languageTranslationUtil.translate(user.getGoodsName(), lang)); } // 翻译退款类型
if (user.getRefundType() != null) { user.setRefundType(languageTranslationUtil.translate(user.getRefundType(), lang)); } // 翻译退款模型描述
if (user.getRefundModel() != null) { String refundModelDesc = convertRefundModelToString(user.getRefundModel()); user.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang)); } } } }
/** * 转换退款类型列表的多语言字段 */ private void translateRefundTypes(List<String> refundTypes, String lang) { if (refundTypes != null && !refundTypes.isEmpty()) { for (int i = 0; i < refundTypes.size(); i++) { String translatedType = languageTranslationUtil.translate(refundTypes.get(i), lang); refundTypes.set(i, translatedType); } } }
/** * 将退款模型数字转换为中文描述 */ private String convertRefundModelToString(Byte refundModel) { if (refundModel == null) return ""; switch (refundModel) { case 0: return "全部退款"; case 1: return "部分退款"; default: return "未知退款方式"; } }}
|