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.

756 lines
33 KiB

  1. package com.example.demo.controller.cash;
  2. import com.example.demo.Util.JWTUtil;
  3. import com.example.demo.Util.LanguageTranslationUtil;
  4. import com.example.demo.domain.DTO.PerformanceDTO;
  5. import com.example.demo.domain.entity.*;
  6. import com.example.demo.domain.vo.cash.*;
  7. import com.example.demo.domain.vo.coin.Page;
  8. import com.example.demo.domain.vo.coin.Result;
  9. import com.example.demo.service.cash.CashCollectionService;
  10. import com.example.demo.service.coin.TranslationService;
  11. import com.github.pagehelper.PageInfo;
  12. import jakarta.servlet.http.HttpServletRequest;
  13. import lombok.RequiredArgsConstructor;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.util.ObjectUtils;
  17. import org.springframework.web.bind.annotation.*;
  18. import org.springframework.web.context.request.RequestContextHolder;
  19. import org.springframework.web.context.request.ServletRequestAttributes;
  20. import java.util.Arrays;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * @program: gold-java
  25. * @ClassName CashCollectionController
  26. * @description:
  27. * @author: Ethan
  28. * @create: 202509-26 10:22
  29. * @Version 1.0
  30. **/
  31. @RestController
  32. @RequestMapping("/cashCollection")
  33. @RequiredArgsConstructor
  34. @Slf4j
  35. @CrossOrigin
  36. public class CashCollectionController {
  37. @Autowired
  38. private CashCollectionService cashCollectionService;
  39. @Autowired
  40. private LanguageTranslationUtil languageTranslationUtil;
  41. @Autowired
  42. private TranslationService translationService;
  43. //根据精网号获取姓名和地区
  44. @PostMapping("/getNameAndMarket")
  45. public Result getNameAndMarket(@RequestBody Integer jwcode, @RequestHeader(defaultValue = "zh_CN") String lang) {
  46. try {
  47. Result result = cashCollectionService.getNameAndMarket(jwcode, lang);
  48. // 对返回结果进行多语言转换
  49. if (result.getCode() == 200 && result.getData() instanceof User) {
  50. User user = (User) result.getData();
  51. // 如果服务层未处理市场名称翻译,在这里进行处理
  52. if (user.getMarketName() != null) {
  53. user.setMarketName(languageTranslationUtil.translate(user.getMarketName(), lang));
  54. }
  55. }
  56. return result;
  57. } catch (Exception e) {
  58. String errorMsg = languageTranslationUtil.translate("查询失败", lang);
  59. return Result.error(errorMsg + ": " + e.getMessage());
  60. }
  61. }
  62. //获取收款活动列表
  63. @PostMapping("/getActivityList")
  64. public Result getActivityList()
  65. {
  66. List<RechargeActivity> list = cashCollectionService.getActivityList();
  67. return Result.success(list);
  68. }
  69. //新增收款订单
  70. @PostMapping("/add")
  71. public Result add(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) {
  72. try {
  73. // 解析语言代码
  74. String languageCode = parseLanguageCode(lang);
  75. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  76. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  77. convertTranslatedFieldsToChinese(cashCollection, languageCode);
  78. }
  79. String result = cashCollectionService.add(cashCollection,lang);
  80. String successMsg = languageTranslationUtil.translate(result, lang);
  81. return Result.success(successMsg);
  82. } catch (Exception e) {
  83. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  84. return Result.error(errorMsg);
  85. }
  86. }
  87. //新增赠送免费金币
  88. @PostMapping("/addFreeCoin")
  89. public Result addFreeCoin(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) {
  90. try {
  91. return Result.success(cashCollectionService.addFreeCoin(cashCollection, lang));
  92. } catch (Exception e) {
  93. return Result.error(e.getMessage());
  94. }
  95. }
  96. //撤回未审核的收款订单
  97. @PostMapping("/cancel")
  98. public Result cancel(@RequestBody CashCollection cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) {
  99. try {
  100. String result = cashCollectionService.cancel(cashRecord.getOrderCode());
  101. String successMsg = languageTranslationUtil.translate(result, lang);
  102. return Result.success(successMsg);
  103. } catch (Exception e) {
  104. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  105. return Result.error(errorMsg);
  106. }
  107. }
  108. //重新提交审核的收款订单
  109. @PostMapping("/reSubmit")
  110. public Result reSubmit(@RequestBody CashRecord cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) {
  111. try {
  112. // 解析语言代码
  113. String languageCode = parseLanguageCode(lang);
  114. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  115. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  116. convertTranslatedRecordFieldsToChinese(cashRecord, languageCode);
  117. }
  118. String result = cashCollectionService.reSubmit(cashRecord, lang);
  119. String successMsg = languageTranslationUtil.translate(result, lang);
  120. return Result.success(successMsg);
  121. } catch (Exception e) {
  122. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  123. return Result.error(errorMsg);
  124. }
  125. }
  126. //多条件查询收款订单列表
  127. @PostMapping("/selectCollection")
  128. public Result selectAll(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
  129. try {
  130. if (ObjectUtils.isEmpty(page.getPageNum())) {
  131. String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
  132. return Result.error(errorMsg);
  133. }
  134. if (ObjectUtils.isEmpty(page.getPageSize())) {
  135. String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
  136. return Result.error(errorMsg);
  137. } else {
  138. //解token权限
  139. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  140. String token = request.getHeader("token");
  141. Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
  142. if (admin != null) {
  143. List<String> list = Arrays.asList(admin.getMarkets().split(","));
  144. page.getCashCollection().setMarkets(list);
  145. // 解析语言代码
  146. String languageCode = parseLanguageCode(lang);
  147. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  148. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  149. convertTranslatedCollectionFieldsToChinese(page.getCashCollection(), languageCode);
  150. }
  151. } else {
  152. String errorMsg = languageTranslationUtil.translate("角色为空", lang);
  153. return Result.error(errorMsg);
  154. }
  155. Result result = Result.success(cashCollectionService.selectCollection(page.getPageNum(), page.getPageSize(), page.getCashCollection()));
  156. // 对返回结果进行多语言转换
  157. if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
  158. PageInfo<CashCollection> pageInfo = (PageInfo<CashCollection>) result.getData();
  159. translateCashCollections(pageInfo, lang);
  160. }
  161. return result;
  162. }
  163. } catch (Exception e) {
  164. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  165. return Result.error(errorMsg);
  166. }
  167. }
  168. @PostMapping("/export")
  169. public Result export(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception {
  170. try {
  171. if (ObjectUtils.isEmpty(page.getPageNum())) {
  172. String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
  173. return Result.error(errorMsg);
  174. }
  175. if (ObjectUtils.isEmpty(page.getPageSize())) {
  176. String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
  177. return Result.error(errorMsg);
  178. }
  179. // 解析语言代码
  180. String languageCode = parseLanguageCode(lang);
  181. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  182. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  183. convertTranslatedCollectionFieldsToChinese(page.getCashCollection(), languageCode);
  184. }
  185. Result result = Result.success(cashCollectionService.selectCollection(page.getPageNum(), page.getPageSize(), page.getCashCollection()));
  186. // 对返回结果进行多语言转换
  187. if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
  188. PageInfo<CashCollection> pageInfo = (PageInfo<CashCollection>) result.getData();
  189. translateCashCollections(pageInfo, lang);
  190. }
  191. return result;
  192. } catch (Exception e) {
  193. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  194. return Result.error(errorMsg);
  195. }
  196. }
  197. //补全手续费等
  198. @PostMapping("/complete")
  199. public Result complete(@RequestBody CashRecord cashRecord, @RequestHeader(defaultValue = "zh_CN") String lang) {
  200. try {
  201. // 解析语言代码
  202. String languageCode = parseLanguageCode(lang);
  203. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  204. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  205. convertTranslatedRecordFieldsToChinese(cashRecord, languageCode);
  206. }
  207. String result = cashCollectionService.complete(cashRecord);
  208. String successMsg = languageTranslationUtil.translate(result, lang);
  209. return Result.success(successMsg);
  210. } catch (Exception e) {
  211. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  212. return Result.error(errorMsg);
  213. }
  214. }
  215. //同步g_order订单到cash_record表
  216. @PostMapping("/syncToCashRecord")
  217. public Result syncToCashRecord(@RequestHeader(defaultValue = "zh_CN") String lang) {
  218. try {
  219. Object result = cashCollectionService.syncToCashRecord();
  220. return Result.success(result);
  221. } catch (Exception e) {
  222. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  223. return Result.error(errorMsg);
  224. }
  225. }
  226. //根据id查询收款订单
  227. @PostMapping("/selectById")
  228. public Result selectById(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) {
  229. try {
  230. CashCollection result = cashCollectionService.selectById(cashCollection);
  231. // 对返回结果进行多语言转换
  232. if (result != null) {
  233. translateSingleCashCollection(result, lang);
  234. }
  235. return Result.success(result);
  236. } catch (Exception e) {
  237. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  238. return Result.error(errorMsg);
  239. }
  240. }
  241. //根据goldcoin订单号查询收款订单
  242. @PostMapping("/selectByGoldCoinOrderCode")
  243. public Result selectByGoldCoinOrderCode(@RequestBody String orderNo, @RequestHeader(defaultValue = "zh_CN") String lang) {
  244. try {
  245. CashCollection result = cashCollectionService.selectByGoldCoinOrderCode(orderNo);
  246. // 对返回结果进行多语言转换
  247. if (result != null) {
  248. translateSingleCashCollection(result, lang);
  249. }
  250. return Result.success(result);
  251. } catch (Exception e) {
  252. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  253. return Result.error(errorMsg);
  254. }
  255. }
  256. //根据id查询收款订单
  257. @PostMapping("/performanceSelect")
  258. public Result performanceSelect(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
  259. try {
  260. // 解析语言代码
  261. String languageCode = parseLanguageCode(lang);
  262. // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体
  263. if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) {
  264. convertTranslatedPerformanceFieldsToChinese(page.getPerformanceVO(), languageCode);
  265. }
  266. Result result = Result.success(cashCollectionService.performanceSelect(page.getPageNum(), page.getPageSize(), page.getPerformanceDTO()));
  267. // 对返回结果进行多语言转换
  268. if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
  269. PageInfo<PerformanceVO> pageInfo = (PageInfo<PerformanceVO>) result.getData();
  270. translatePerformanceVOs(pageInfo, lang);
  271. }
  272. return result;
  273. } catch (Exception e) {
  274. String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang);
  275. return Result.error(errorMsg);
  276. }
  277. }
  278. // 根据精网号和钱包 ID 查询用户钱包明细列表
  279. @PostMapping("/selectWalletRecords")
  280. public Result selectWalletRecords(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
  281. try {
  282. if (ObjectUtils.isEmpty(page.getPageNum())) {
  283. String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
  284. return Result.error(errorMsg);
  285. }
  286. if (ObjectUtils.isEmpty(page.getPageSize())) {
  287. String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
  288. return Result.error(errorMsg);
  289. }
  290. // 校验精网号是否为空
  291. if (page.getUserWalletRecord() == null || page.getUserWalletRecord().getJwcode() == null) {
  292. String errorMsg = languageTranslationUtil.translate("精网号不能为空", lang);
  293. return Result.error(errorMsg);
  294. }
  295. Result result = Result.success(cashCollectionService.selectWalletRecordsByJwcodeAndWalletId(
  296. page.getPageNum(),
  297. page.getPageSize(),
  298. page.getUserWalletRecord().getJwcode(),
  299. page.getUserWalletRecord().getWalletId()
  300. ));
  301. // 对返回结果进行多语言转换
  302. if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
  303. PageInfo<UserWalletRecordVO> pageInfo = (PageInfo<UserWalletRecordVO>) result.getData();
  304. translateWalletRecordVOs(pageInfo, lang);
  305. }
  306. return result;
  307. } catch (Exception e) {
  308. String errorMsg = languageTranslationUtil.translate("查询失败", lang);
  309. return Result.error(errorMsg + ": " + e.getMessage());
  310. }
  311. }
  312. // 根据精网号和地区查询用户的所有钱包 ID 和金币数量
  313. @PostMapping("/selectUserWallets")
  314. public Result selectUserWallets(@RequestBody Map<String, Object> params, @RequestHeader(defaultValue = "zh_CN") String lang) {
  315. try {
  316. Integer jwcode = null;
  317. String market = null;
  318. Integer pageNum = null;
  319. Integer pageSize = null;
  320. // 处理 jwcode 参数(兼容 null 和空字符串)
  321. if (params.containsKey("jwcode")) {
  322. Object jwcodeObj = params.get("jwcode");
  323. // 判断是否为 null 或空字符串
  324. if (jwcodeObj != null) {
  325. String jwcodeStr = jwcodeObj.toString();
  326. if (!jwcodeStr.isEmpty()) {
  327. try {
  328. jwcode = ((Number) jwcodeObj).intValue();
  329. } catch (Exception e) {
  330. // 如果转换失败,保持为 null
  331. }
  332. }
  333. }
  334. }
  335. // 处理 market 参数
  336. if (params.containsKey("market")) {
  337. Object marketObj = params.get("market");
  338. if (marketObj != null && !marketObj.toString().isEmpty()) {
  339. market = marketObj.toString();
  340. }
  341. }
  342. // 处理分页参数
  343. if (params.containsKey("pageNum")) {
  344. Object pageNumObj = params.get("pageNum");
  345. if (pageNumObj != null && !pageNumObj.toString().isEmpty()) {
  346. try {
  347. pageNum = ((Number) pageNumObj).intValue();
  348. } catch (Exception e) {
  349. pageNum = 1; // 默认第一页
  350. }
  351. }
  352. }
  353. if (params.containsKey("pageSize")) {
  354. Object pageSizeObj = params.get("pageSize");
  355. if (pageSizeObj != null && !pageSizeObj.toString().isEmpty()) {
  356. try {
  357. pageSize = ((Number) pageSizeObj).intValue();
  358. } catch (Exception e) {
  359. pageSize = 10; // 默认每页 10 条
  360. }
  361. }
  362. }
  363. // 如果没有传分页参数,设置默认值
  364. if (pageNum == null) {
  365. pageNum = 1;
  366. }
  367. if (pageSize == null) {
  368. pageSize = 10;
  369. }
  370. PageInfo<UserWalletVO> result = cashCollectionService.selectUserWallets(jwcode, market, pageNum, pageSize);
  371. // 对返回结果进行多语言转换
  372. if (result != null && result.getList() != null) {
  373. for (UserWalletVO vo : result.getList()) {
  374. translateUserWalletVO(vo, lang);
  375. }
  376. }
  377. return Result.success(result);
  378. } catch (Exception e) {
  379. String errorMsg = languageTranslationUtil.translate("查询失败", lang);
  380. return Result.error(errorMsg + ": " + e.getMessage());
  381. }
  382. }
  383. /**
  384. * 转换用户钱包 VO 的多语言字段
  385. */
  386. private void translateUserWalletVO(UserWalletVO vo, String lang) {
  387. if (vo != null) {
  388. // 翻译地区名称
  389. if (vo.getMarketName() != null) {
  390. vo.setMarketName(languageTranslationUtil.translate(vo.getMarketName(), lang));
  391. }
  392. // 翻译钱包名称
  393. if (vo.getWalletList() != null) {
  394. for (WalletItem wallet : vo.getWalletList()) {
  395. if (wallet.getWalletName() != null) {
  396. wallet.setWalletName(languageTranslationUtil.translate(wallet.getWalletName(), lang));
  397. }
  398. }
  399. }
  400. }
  401. }
  402. /**
  403. * 转换现金收款订单的多语言字段
  404. */
  405. private void translateCashCollections(PageInfo<CashCollection> pageInfo, String lang) {
  406. if (pageInfo != null && pageInfo.getList() != null) {
  407. for (CashCollection collection : pageInfo.getList()) {
  408. translateSingleCashCollection(collection, lang);
  409. }
  410. }
  411. }
  412. /**
  413. * 转换单个现金收款订单的多语言字段
  414. */
  415. private void translateSingleCashCollection(CashCollection collection, String lang) {
  416. if (collection != null) {
  417. // 翻译市场名称
  418. if (collection.getMarketName() != null) {
  419. collection.setMarketName(languageTranslationUtil.translate(collection.getMarketName(), lang));
  420. }
  421. // 翻译商品名称
  422. if (collection.getGoodsName() != null) {
  423. collection.setGoodsName(languageTranslationUtil.translate(collection.getGoodsName(), lang));
  424. }
  425. // 翻译支付方式
  426. if (collection.getPayType() != null) {
  427. collection.setPayType(languageTranslationUtil.translate(collection.getPayType(), lang));
  428. }
  429. // 翻译到账地区
  430. if (collection.getReceivedMarket() != null) {
  431. collection.setReceivedMarket(languageTranslationUtil.translate(collection.getReceivedMarket(), lang));
  432. }
  433. // 翻译支付币种
  434. if (collection.getPaymentCurrency() != null) {
  435. collection.setPaymentCurrency(languageTranslationUtil.translate(collection.getPaymentCurrency(), lang));
  436. }
  437. // 翻译数量单位
  438. if (collection.getNumUnit() != null) {
  439. collection.setNumUnit(languageTranslationUtil.translate(collection.getNumUnit(), lang));
  440. }
  441. }
  442. }
  443. /**
  444. * 转换绩效数据的多语言字段
  445. */
  446. private void translatePerformanceVOs(PageInfo<PerformanceVO> pageInfo, String lang) {
  447. if (pageInfo != null && pageInfo.getList() != null) {
  448. for (PerformanceVO performance : pageInfo.getList()) {
  449. translateSinglePerformanceVO(performance, lang);
  450. }
  451. }
  452. }
  453. /**
  454. * 转换单个绩效数据的多语言字段
  455. */
  456. private void translateSinglePerformanceVO(PerformanceVO performance, String lang) {
  457. if (performance != null) {
  458. // 翻译市场名称
  459. if (performance.getMarketName() != null) {
  460. performance.setMarketName(languageTranslationUtil.translate(performance.getMarketName(), lang));
  461. }
  462. // 翻译支付币种
  463. if (performance.getPaymentCurrency() != null) {
  464. performance.setPaymentCurrency(languageTranslationUtil.translate(performance.getPaymentCurrency(), lang));
  465. }
  466. // 翻译到账币种
  467. if (performance.getReceivedCurrency() != null) {
  468. performance.setReceivedCurrency(languageTranslationUtil.translate(performance.getReceivedCurrency(), lang));
  469. }
  470. }
  471. }
  472. /**
  473. * 解析语言代码
  474. */
  475. private String parseLanguageCode(String langHeader) {
  476. if (langHeader == null || langHeader.isEmpty()) {
  477. return "zh";
  478. }
  479. // 处理类似 "en-US" 或 "zh-TW" 的情况
  480. if (langHeader.contains("-")) {
  481. String[] parts = langHeader.split("-");
  482. // 特殊处理中文繁体
  483. if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) {
  484. return "zh_TW";
  485. }
  486. return parts[0].toLowerCase();
  487. }
  488. return langHeader.toLowerCase();
  489. }
  490. /**
  491. * 将收款订单查询条件中的翻译字段转换为中文简体
  492. */
  493. private void convertTranslatedFieldsToChinese(CashCollection cashCollection, String languageCode) {
  494. if (cashCollection != null) {
  495. // 转换商品名称
  496. if (cashCollection.getGoodsName() != null && !cashCollection.getGoodsName().isEmpty()) {
  497. String chineseGoodsName = translationService.findChineseSimplifiedByTranslation(
  498. cashCollection.getGoodsName(), languageCode);
  499. cashCollection.setGoodsName(chineseGoodsName);
  500. }
  501. // 转换支付方式
  502. if (cashCollection.getPayType() != null && !cashCollection.getPayType().isEmpty()) {
  503. String chinesePayType = translationService.findChineseSimplifiedByTranslation(
  504. cashCollection.getPayType(), languageCode);
  505. cashCollection.setPayType(chinesePayType);
  506. }
  507. // 转换到账地区
  508. if (cashCollection.getReceivedMarket() != null && !cashCollection.getReceivedMarket().isEmpty()) {
  509. String chineseMarket = translationService.findChineseSimplifiedByTranslation(
  510. cashCollection.getReceivedMarket(), languageCode);
  511. cashCollection.setReceivedMarket(chineseMarket);
  512. }
  513. // 转换所属地区名称
  514. if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) {
  515. String chineseMarketName = translationService.findChineseSimplifiedByTranslation(
  516. cashCollection.getMarketName(), languageCode);
  517. cashCollection.setMarketName(chineseMarketName);
  518. }
  519. // 转换数量单位
  520. if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) {
  521. String chineseNumUnit = translationService.findChineseSimplifiedByTranslation(
  522. cashCollection.getNumUnit(), languageCode);
  523. cashCollection.setNumUnit(chineseNumUnit);
  524. }
  525. }
  526. }
  527. /**
  528. * 将现金记录查询条件中的翻译字段转换为中文简体
  529. */
  530. private void convertTranslatedRecordFieldsToChinese(CashRecord cashRecord, String languageCode) {
  531. if (cashRecord != null) {
  532. // 转换商品名称
  533. if (cashRecord.getGoodsName() != null && !cashRecord.getGoodsName().isEmpty()) {
  534. String chineseGoodsName = translationService.findChineseSimplifiedByTranslation(
  535. cashRecord.getGoodsName(), languageCode);
  536. cashRecord.setGoodsName(chineseGoodsName);
  537. }
  538. // 转换支付方式
  539. if (cashRecord.getPayType() != null && !cashRecord.getPayType().isEmpty()) {
  540. String chinesePayType = translationService.findChineseSimplifiedByTranslation(
  541. cashRecord.getPayType(), languageCode);
  542. cashRecord.setPayType(chinesePayType);
  543. }
  544. // 转换到账地区
  545. if (cashRecord.getReceivedMarket() != null && !cashRecord.getReceivedMarket().isEmpty()) {
  546. String chineseMarket = translationService.findChineseSimplifiedByTranslation(
  547. cashRecord.getReceivedMarket(), languageCode);
  548. cashRecord.setReceivedMarket(chineseMarket);
  549. }
  550. // 转换原始付款币种
  551. if (cashRecord.getPaymentCurrencyOrig() != null && !cashRecord.getPaymentCurrencyOrig().isEmpty()) {
  552. String chinesePaymentCurrencyOrig = translationService.findChineseSimplifiedByTranslation(
  553. cashRecord.getPaymentCurrencyOrig(), languageCode);
  554. cashRecord.setPaymentCurrencyOrig(chinesePaymentCurrencyOrig);
  555. }
  556. }
  557. }
  558. /**
  559. * 将收款订单列表查询条件中的翻译字段转换为中文简体
  560. */
  561. private void convertTranslatedCollectionFieldsToChinese(CashCollection cashCollection, String languageCode) {
  562. if (cashCollection != null) {
  563. // 转换商品名称
  564. if (cashCollection.getGoodsName() != null && !cashCollection.getGoodsName().isEmpty()) {
  565. String chineseGoodsName = translationService.findChineseSimplifiedByTranslation(
  566. cashCollection.getGoodsName(), languageCode);
  567. cashCollection.setGoodsName(chineseGoodsName);
  568. }
  569. // 转换支付方式
  570. if (cashCollection.getPayType() != null && !cashCollection.getPayType().isEmpty()) {
  571. String chinesePayType = translationService.findChineseSimplifiedByTranslation(
  572. cashCollection.getPayType(), languageCode);
  573. cashCollection.setPayType(chinesePayType);
  574. }
  575. // 转换到账地区
  576. if (cashCollection.getReceivedMarket() != null && !cashCollection.getReceivedMarket().isEmpty()) {
  577. String chineseMarket = translationService.findChineseSimplifiedByTranslation(
  578. cashCollection.getReceivedMarket(), languageCode);
  579. cashCollection.setReceivedMarket(chineseMarket);
  580. }
  581. // 转换支付币种
  582. if (cashCollection.getPaymentCurrency() != null && !cashCollection.getPaymentCurrency().isEmpty()) {
  583. String chineseCurrency = translationService.findChineseSimplifiedByTranslation(
  584. cashCollection.getPaymentCurrency(), languageCode);
  585. cashCollection.setPaymentCurrency(chineseCurrency);
  586. }
  587. // 转换提交人地区
  588. if (cashCollection.getSubmitterMarket() != null && !cashCollection.getSubmitterMarket().isEmpty()) {
  589. String chineseMarket = translationService.findChineseSimplifiedByTranslation(
  590. cashCollection.getSubmitterMarket(), languageCode);
  591. cashCollection.setSubmitterMarket(chineseMarket);
  592. }
  593. // 转换所属地区名称
  594. if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) {
  595. String chineseMarketName = translationService.findChineseSimplifiedByTranslation(
  596. cashCollection.getMarketName(), languageCode);
  597. cashCollection.setMarketName(chineseMarketName);
  598. }
  599. // 转换数量单位
  600. if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) {
  601. String chineseNumUnit = translationService.findChineseSimplifiedByTranslation(
  602. cashCollection.getNumUnit(), languageCode);
  603. cashCollection.setNumUnit(chineseNumUnit);
  604. }
  605. }
  606. }
  607. /**
  608. * 将绩效查询条件中的翻译字段转换为中文简体
  609. */
  610. private void convertTranslatedPerformanceFieldsToChinese(PerformanceVO performanceVO, String languageCode) {
  611. if (performanceVO != null) {
  612. // 转换市场名称
  613. if (performanceVO.getMarketName() != null && !performanceVO.getMarketName().isEmpty()) {
  614. String chineseMarketName = translationService.findChineseSimplifiedByTranslation(
  615. performanceVO.getMarketName(), languageCode);
  616. performanceVO.setMarketName(chineseMarketName);
  617. }
  618. // 转换支付币种
  619. if (performanceVO.getPaymentCurrency() != null && !performanceVO.getPaymentCurrency().isEmpty()) {
  620. String chinesePaymentCurrency = translationService.findChineseSimplifiedByTranslation(
  621. performanceVO.getPaymentCurrency(), languageCode);
  622. performanceVO.setPaymentCurrency(chinesePaymentCurrency);
  623. }
  624. // 转换到账币种
  625. if (performanceVO.getReceivedCurrency() != null && !performanceVO.getReceivedCurrency().isEmpty()) {
  626. String chineseReceivedCurrency = translationService.findChineseSimplifiedByTranslation(
  627. performanceVO.getReceivedCurrency(), languageCode);
  628. performanceVO.setReceivedCurrency(chineseReceivedCurrency);
  629. }
  630. }
  631. }
  632. /**
  633. * 转换用户钱包明细 VO 列表的多语言字段
  634. */
  635. private void translateWalletRecordVOs(PageInfo<UserWalletRecordVO> pageInfo, String lang) {
  636. if (pageInfo != null && pageInfo.getList() != null) {
  637. for (UserWalletRecordVO vo : pageInfo.getList()) {
  638. translateWalletRecordVO(vo, lang);
  639. }
  640. }
  641. }
  642. /**
  643. * 转换用户钱包明细 VO 的多语言字段
  644. */
  645. private void translateWalletRecordVO(UserWalletRecordVO vo, String lang) {
  646. if (vo != null) {
  647. // 翻译地区名称
  648. if (vo.getMarketName() != null) {
  649. vo.setMarketName(languageTranslationUtil.translate(vo.getMarketName(), lang));
  650. }
  651. // 翻译钱包名称
  652. if (vo.getWalletName() != null) {
  653. vo.setWalletName(languageTranslationUtil.translate(vo.getWalletName(), lang));
  654. }
  655. // 翻译交易说明
  656. if (vo.getDescription() != null) {
  657. vo.setDescription(languageTranslationUtil.translate(vo.getDescription(), lang));
  658. }
  659. // 翻译交易类型
  660. if (vo.getType() != null) {
  661. String typeText = vo.getType() == 0 ? "充值" : (vo.getType() == 1 ? "消耗" : "退款");
  662. vo.setTypeText(languageTranslationUtil.translate(typeText, lang));
  663. }
  664. // 翻译状态
  665. if (vo.getStatus() != null) {
  666. String statusText = vo.getStatus() == 0 ? "正常" : "已退款";
  667. vo.setStatusText(languageTranslationUtil.translate(statusText, lang));
  668. }
  669. }
  670. }
  671. }