package com.example.demo.controller.cash; import com.example.demo.Util.JWTUtil; import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.domain.DTO.PerformanceDTO; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.entity.RechargeActivity; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.cash.CashCollection; import com.example.demo.domain.vo.cash.PerformanceVO; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.cash.CashCollectionService; 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.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 java.util.Arrays; import java.util.List; /** * @program: gold-java * @ClassName CashCollectionController * @description: * @author: Ethan * @create: 2025−09-26 10:22 * @Version 1.0 **/ @RestController @RequestMapping("/cashCollection") @RequiredArgsConstructor @Slf4j @CrossOrigin public class CashCollectionController { @Autowired private CashCollectionService cashCollectionService; @Autowired private LanguageTranslationUtil languageTranslationUtil; @Autowired private TranslationService translationService; //根据精网号获取姓名和地区 @PostMapping("/getNameAndMarket") public Result getNameAndMarket(@RequestBody Integer jwcode, @RequestHeader(defaultValue = "zh_CN") String lang) { try { Result result = cashCollectionService.getNameAndMarket(jwcode, lang); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof User) { User user = (User) result.getData(); // 如果服务层未处理市场名称翻译,在这里进行处理 if (user.getMarketName() != null) { user.setMarketName(languageTranslationUtil.translate(user.getMarketName(), lang)); } } return result; } catch (Exception e) { String errorMsg = languageTranslationUtil.translate("查询失败", lang); return Result.error(errorMsg + ": " + e.getMessage()); } } //获取收款活动列表 @PostMapping("/getActivityList") public Result getActivityList() { List list = cashCollectionService.getActivityList(); return Result.success(list); } //新增收款订单 @PostMapping("/add") public Result add(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) { try { // 解析语言代码 String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedFieldsToChinese(cashCollection, languageCode); } String result = cashCollectionService.add(cashCollection,lang); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //新增赠送免费金币 @PostMapping("/addFreeCoin") public Result addFreeCoin(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) { try { return Result.success(cashCollectionService.addFreeCoin(cashCollection, lang)); } catch (Exception e) { return Result.error(e.getMessage()); } } //撤回未审核的收款订单 @PostMapping("/cancel") public Result cancel(@RequestBody CashCollection cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) { try { String result = cashCollectionService.cancel(cashRecord.getOrderCode()); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //重新提交审核的收款订单 @PostMapping("/reSubmit") public Result reSubmit(@RequestBody CashRecord cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) { try { // 解析语言代码 String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedRecordFieldsToChinese(cashRecord, languageCode); } String result = cashCollectionService.reSubmit(cashRecord, lang); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //多条件查询收款订单列表 @PostMapping("/selectCollection") public Result selectAll(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { 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 list = Arrays.asList(admin.getMarkets().split(",")); page.getCashCollection().setMarkets(list); // 解析语言代码 String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedCollectionFieldsToChinese(page.getCashCollection(), languageCode); } } else { String errorMsg = languageTranslationUtil.translate("角色为空", lang); return Result.error(errorMsg); } Result result = Result.success(cashCollectionService.selectCollection(page.getPageNum(), page.getPageSize(), page.getCashCollection())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo pageInfo = (PageInfo) result.getData(); translateCashCollections(pageInfo, lang); } return result; } } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } @PostMapping("/export") public Result export(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { try { 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); } // 解析语言代码 String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedCollectionFieldsToChinese(page.getCashCollection(), languageCode); } Result result = Result.success(cashCollectionService.selectCollection(page.getPageNum(), page.getPageSize(), page.getCashCollection())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo pageInfo = (PageInfo) result.getData(); translateCashCollections(pageInfo, lang); } return result; } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //补全手续费等 @PostMapping("/complete") public Result complete(@RequestBody CashRecord cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) { try { String result = cashCollectionService.complete(cashRecord); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //同步g_order订单到cash_record表 @PostMapping("/syncToCashRecord") public Result syncToCashRecord(@RequestHeader(defaultValue = "zh_CN") String lang) { try { Object result = cashCollectionService.syncToCashRecord(); return Result.success(result); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //根据id查询收款订单 @PostMapping("/selectById") public Result selectById(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) { try { CashCollection result = cashCollectionService.selectById(cashCollection); // 对返回结果进行多语言转换 if (result != null) { translateSingleCashCollection(result, lang); } return Result.success(result); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //根据goldcoin订单号查询收款订单 @PostMapping("/selectByGoldCoinOrderCode") public Result selectByGoldCoinOrderCode(@RequestBody String orderNo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { CashCollection result = cashCollectionService.selectByGoldCoinOrderCode(orderNo); // 对返回结果进行多语言转换 if (result != null) { translateSingleCashCollection(result, lang); } return Result.success(result); } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } //根据id查询收款订单 @PostMapping("/performanceSelect") public Result performanceSelect(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { // 解析语言代码 String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { convertTranslatedPerformanceFieldsToChinese(page.getPerformanceVO(), languageCode); } Result result = Result.success(cashCollectionService.performanceSelect(page.getPageNum(), page.getPageSize(), page.getPerformanceDTO())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof PageInfo) { PageInfo pageInfo = (PageInfo) result.getData(); translatePerformanceVOs(pageInfo, lang); } return result; } catch (Exception e) { String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); return Result.error(errorMsg); } } /** * 转换现金收款订单的多语言字段 */ private void translateCashCollections(PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (CashCollection collection : pageInfo.getList()) { translateSingleCashCollection(collection, lang); } } } /** * 转换单个现金收款订单的多语言字段 */ private void translateSingleCashCollection(CashCollection collection, String lang) { if (collection != null) { // 翻译市场名称 if (collection.getMarketName() != null) { collection.setMarketName(languageTranslationUtil.translate(collection.getMarketName(), lang)); } // 翻译商品名称 if (collection.getGoodsName() != null) { collection.setGoodsName(languageTranslationUtil.translate(collection.getGoodsName(), lang)); } // 翻译支付方式 if (collection.getPayType() != null) { collection.setPayType(languageTranslationUtil.translate(collection.getPayType(), lang)); } // 翻译到账地区 if (collection.getReceivedMarket() != null) { collection.setReceivedMarket(languageTranslationUtil.translate(collection.getReceivedMarket(), lang)); } // 翻译支付币种 if (collection.getPaymentCurrency() != null) { collection.setPaymentCurrency(languageTranslationUtil.translate(collection.getPaymentCurrency(), lang)); } // 翻译数量单位 if (collection.getNumUnit() != null) { collection.setNumUnit(languageTranslationUtil.translate(collection.getNumUnit(), lang)); } } } /** * 转换绩效数据的多语言字段 */ private void translatePerformanceVOs(PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (PerformanceVO performance : pageInfo.getList()) { translateSinglePerformanceVO(performance, lang); } } } /** * 转换单个绩效数据的多语言字段 */ private void translateSinglePerformanceVO(PerformanceVO performance, String lang) { if (performance != null) { // 翻译市场名称 if (performance.getMarketName() != null) { performance.setMarketName(languageTranslationUtil.translate(performance.getMarketName(), lang)); } // 翻译支付币种 if (performance.getPaymentCurrency() != null) { performance.setPaymentCurrency(languageTranslationUtil.translate(performance.getPaymentCurrency(), lang)); } // 翻译到账币种 if (performance.getReceivedCurrency() != null) { performance.setReceivedCurrency(languageTranslationUtil.translate(performance.getReceivedCurrency(), 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(CashCollection cashCollection, String languageCode) { if (cashCollection != null) { // 转换商品名称 if (cashCollection.getGoodsName() != null && !cashCollection.getGoodsName().isEmpty()) { String chineseGoodsName = translationService.findChineseSimplifiedByTranslation( cashCollection.getGoodsName(), languageCode); cashCollection.setGoodsName(chineseGoodsName); } // 转换支付方式 if (cashCollection.getPayType() != null && !cashCollection.getPayType().isEmpty()) { String chinesePayType = translationService.findChineseSimplifiedByTranslation( cashCollection.getPayType(), languageCode); cashCollection.setPayType(chinesePayType); } // 转换到账地区 if (cashCollection.getReceivedMarket() != null && !cashCollection.getReceivedMarket().isEmpty()) { String chineseMarket = translationService.findChineseSimplifiedByTranslation( cashCollection.getReceivedMarket(), languageCode); cashCollection.setReceivedMarket(chineseMarket); } // 转换所属地区名称 if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) { String chineseMarketName = translationService.findChineseSimplifiedByTranslation( cashCollection.getMarketName(), languageCode); cashCollection.setMarketName(chineseMarketName); } // 转换数量单位 if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) { String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( cashCollection.getNumUnit(), languageCode); cashCollection.setNumUnit(chineseNumUnit); } } } /** * 将现金记录查询条件中的翻译字段转换为中文简体 */ private void convertTranslatedRecordFieldsToChinese(CashRecord cashRecord, String languageCode) { if (cashRecord != null) { // 转换商品名称 if (cashRecord.getGoodsName() != null && !cashRecord.getGoodsName().isEmpty()) { String chineseGoodsName = translationService.findChineseSimplifiedByTranslation( cashRecord.getGoodsName(), languageCode); cashRecord.setGoodsName(chineseGoodsName); } // 转换支付方式 if (cashRecord.getPayType() != null && !cashRecord.getPayType().isEmpty()) { String chinesePayType = translationService.findChineseSimplifiedByTranslation( cashRecord.getPayType(), languageCode); cashRecord.setPayType(chinesePayType); } // 转换到账地区 if (cashRecord.getReceivedMarket() != null && !cashRecord.getReceivedMarket().isEmpty()) { String chineseMarket = translationService.findChineseSimplifiedByTranslation( cashRecord.getReceivedMarket(), languageCode); cashRecord.setReceivedMarket(chineseMarket); } } } /** * 将收款订单列表查询条件中的翻译字段转换为中文简体 */ private void convertTranslatedCollectionFieldsToChinese(CashCollection cashCollection, String languageCode) { if (cashCollection != null) { // 转换商品名称 if (cashCollection.getGoodsName() != null && !cashCollection.getGoodsName().isEmpty()) { String chineseGoodsName = translationService.findChineseSimplifiedByTranslation( cashCollection.getGoodsName(), languageCode); cashCollection.setGoodsName(chineseGoodsName); } // 转换支付方式 if (cashCollection.getPayType() != null && !cashCollection.getPayType().isEmpty()) { String chinesePayType = translationService.findChineseSimplifiedByTranslation( cashCollection.getPayType(), languageCode); cashCollection.setPayType(chinesePayType); } // 转换到账地区 if (cashCollection.getReceivedMarket() != null && !cashCollection.getReceivedMarket().isEmpty()) { String chineseMarket = translationService.findChineseSimplifiedByTranslation( cashCollection.getReceivedMarket(), languageCode); cashCollection.setReceivedMarket(chineseMarket); } // 转换支付币种 if (cashCollection.getPaymentCurrency() != null && !cashCollection.getPaymentCurrency().isEmpty()) { String chineseCurrency = translationService.findChineseSimplifiedByTranslation( cashCollection.getPaymentCurrency(), languageCode); cashCollection.setPaymentCurrency(chineseCurrency); } // 转换提交人地区 if (cashCollection.getSubmitterMarket() != null && !cashCollection.getSubmitterMarket().isEmpty()) { String chineseMarket = translationService.findChineseSimplifiedByTranslation( cashCollection.getSubmitterMarket(), languageCode); cashCollection.setSubmitterMarket(chineseMarket); } // 转换所属地区名称 if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) { String chineseMarketName = translationService.findChineseSimplifiedByTranslation( cashCollection.getMarketName(), languageCode); cashCollection.setMarketName(chineseMarketName); } // 转换数量单位 if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) { String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( cashCollection.getNumUnit(), languageCode); cashCollection.setNumUnit(chineseNumUnit); } } } /** * 将绩效查询条件中的翻译字段转换为中文简体 */ private void convertTranslatedPerformanceFieldsToChinese(PerformanceVO performanceVO, String languageCode) { if (performanceVO != null) { // 转换市场名称 if (performanceVO.getMarketName() != null && !performanceVO.getMarketName().isEmpty()) { String chineseMarketName = translationService.findChineseSimplifiedByTranslation( performanceVO.getMarketName(), languageCode); performanceVO.setMarketName(chineseMarketName); } // 转换支付币种 if (performanceVO.getPaymentCurrency() != null && !performanceVO.getPaymentCurrency().isEmpty()) { String chinesePaymentCurrency = translationService.findChineseSimplifiedByTranslation( performanceVO.getPaymentCurrency(), languageCode); performanceVO.setPaymentCurrency(chinesePaymentCurrency); } // 转换到账币种 if (performanceVO.getReceivedCurrency() != null && !performanceVO.getReceivedCurrency().isEmpty()) { String chineseReceivedCurrency = translationService.findChineseSimplifiedByTranslation( performanceVO.getReceivedCurrency(), languageCode); performanceVO.setReceivedCurrency(chineseReceivedCurrency); } } } }