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
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|