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.

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