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.

515 lines
22 KiB

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 {
return Result.success(cashCollectionService.getNameAndMarket(jwcode));
} catch (Exception e) {
String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
return Result.error(errorMsg);
}
}
//获取收款活动列表
@PostMapping("/getActivityList")
public Result getActivityList()
{
List<RechargeActivity> 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<String> 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<CashCollection> pageInfo = (PageInfo<CashCollection>) 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<CashCollection> pageInfo = (PageInfo<CashCollection>) 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<PerformanceVO> pageInfo = (PageInfo<PerformanceVO>) result.getData();
translatePerformanceVOs(pageInfo, lang);
}
return result;
} catch (Exception e) {
// 推送异常到飞书(核心:调用工具类)
System.out.println(e.getMessage());
String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
throw new SecurityException();
}
}
/**
* 转换现金收款订单的多语言字段
*/
private void translateCashCollections(PageInfo<CashCollection> 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));
}
}
}
/**
* 转换绩效数据的多语言字段
*/
private void translatePerformanceVOs(PageInfo<PerformanceVO> 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);
}
}
}
/**
* 将现金记录查询条件中的翻译字段转换为中文简体
*/
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);
}
}
}
/**
* 将绩效查询条件中的翻译字段转换为中文简体
*/
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);
}
}
}
}