From 579177ac64462d0fec885eb10af3097245134f80 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 02 Jun 2026 10:28:11 +0800
Subject: [PATCH] 1
---
trading-order-admin/src/main/java/com/yami/trading/api/model/UserLoginModel.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAdvertController.java | 24
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java | 12
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWalletController.java | 12
trading-order-admin/src/main/java/com/yami/trading/api/controller/PromoteController.java | 2
scripts/translate_api_exceptions.ps1 | 128 +++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewOnlineChatController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiHighLevelAuthController.java | 22
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java | 48 +-
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRealNameAuthContoller.java | 10
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadImgController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java | 44
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java | 14
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalListController.java | 6
trading-order-common/src/main/java/com/yami/trading/common/util/ApiMessageTranslator.java | 246 ++++++++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiCapitaltWalletWalletController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWithdrawController.java | 18
trading-order-common/src/main/java/com/yami/trading/common/config/DefaultExceptionHandlerConfig.java | 25
trading-order-admin/src/main/java/com/yami/trading/api/dto/FutureOpenAction.java | 8
trading-order-admin/src/main/java/com/yami/trading/api/model/SetSafewordModel.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java | 54 +-
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalController.java | 10
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiOtcOnlineChatController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethod2Controller.java | 32
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java | 16
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethodController.java | 32
trading-order-admin/src/main/java/com/yami/trading/api/dto/CloseAction.java | 12
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java | 182 +++---
trading-order-admin/src/main/java/com/yami/trading/api/filter/KickoutFilter.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cPaymentMethodConfigController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cUserController.java | 6
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAppealController.java | 14
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApGoogleAuthController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java | 8
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadFileController.java | 4
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/dto/OpenAction.java | 12
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiKycController.java | 4
trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java | 4
scripts/translate_api_exceptions.js | 145 ++++++
scripts/translate_api_exceptions.py | 150 ++++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java | 2
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java | 22
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java | 22
trading-order-common/src/main/java/com/yami/trading/common/config/ApiResponseBodyAdvice.java | 39 +
48 files changed, 1,073 insertions(+), 354 deletions(-)
diff --git a/scripts/translate_api_exceptions.js b/scripts/translate_api_exceptions.js
new file mode 100644
index 0000000..64bc8f6
--- /dev/null
+++ b/scripts/translate_api_exceptions.js
@@ -0,0 +1,145 @@
+const fs = require('fs');
+const path = require('path');
+
+const apiRoot = path.join(__dirname, '../trading-order-admin/src/main/java/com/yami/trading/api');
+
+const pairs = [
+ ['校验IP不合法', 'Invalid IP address'],
+ ['资金密码不能为空', 'Fund password is required'],
+ ['资金密码不符合设定', 'Fund password does not meet requirements'],
+ ['请先登录', 'Please log in first'],
+ ['用户名不能为空', 'Username is required'],
+ ['密码不能为空', 'Password is required'],
+ ['密码必须6-12位', 'Password must be 6-12 characters'],
+ ['验证类型不能为空', 'Verification type is required'],
+ ['验证码不能为空', 'Verification code is required'],
+ ['用户名不存在', 'Username does not exist'],
+ ['验证码不正确', 'Incorrect verification code'],
+ ['用户名参数为空', 'Username is required'],
+ ['请填写正确的电话号码', 'Please enter a valid phone number'],
+ ['电话号码已绑定', 'Phone number is already bound'],
+ ['电话号码已绑定其他用户', 'Phone number is bound to another user'],
+ ['请填写正确的验证码', 'Please enter a valid verification code'],
+ ['请输入推荐码', 'Please enter referral code'],
+ ['推荐人无权限推荐', 'Referrer is not authorized to refer'],
+ ['请填写正确的邮箱地址', 'Please enter a valid email address'],
+ ['邮箱已绑定', 'Email is already bound'],
+ ['邮箱已绑定其他用户', 'Email is bound to another user'],
+ ['旧密码不能为空', 'Old password is required'],
+ ['新密码不能为空', 'New password is required'],
+ ['新密码确认不能为空', 'Password confirmation is required'],
+ ['旧密码不正确!', 'Incorrect old password'],
+ ['新密码不一致', 'New passwords do not match'],
+ ['旧资金密码不能为空', 'Old fund password is required'],
+ ['新资金密码不能为空', 'New fund password is required'],
+ ['新资金密码确认不能为空', 'Fund password confirmation is required'],
+ ['操作类型为空', 'Operation type is required'],
+ ['操作类型不是整数', 'Operation type must be an integer'],
+ ['操作类型不能小于0', 'Operation type cannot be negative'],
+ ['备注长度超过250', 'Remark exceeds 250 characters'],
+ ['请求第三方失败', 'Third-party request failed'],
+ ['资金密码必须6-12位', 'Fund password must be 6-12 characters'],
+ ['资金密码错误', 'Incorrect fund password'],
+ ['订单不存在!', 'Order does not exist'],
+ ['页码不是整数', 'Page number must be an integer'],
+ ['页码不能小于等于0', 'Page number must be greater than 0'],
+ ['k线图获取失败', 'Failed to load chart data'],
+ ['请输入正确的货币数量', 'Please enter a valid amount'],
+ ['请选择正确的币种', 'Please select a valid currency'],
+ ['请稍后再试', 'Please try again later'],
+ ['用户已禁用!', 'User account is disabled'],
+ ['用户已禁用', 'User account is disabled'],
+ ['系统错误,请稍后重试', 'System error, please try again later'],
+ ['参数错误', 'Invalid parameters'],
+ ['请输入正确的兑换数量', 'Please enter a valid exchange amount'],
+ ['生成实时数据失败', 'Failed to generate market data'],
+ ['状态不是整数', 'Status must be an integer'],
+ ['状态不能小于0', 'Status cannot be negative'],
+ ['证件号码长度超过50', 'ID number exceeds 50 characters'],
+ ['实名姓名长度超过50', 'Real name exceeds 50 characters'],
+ ['账号或密码不正确', 'Incorrect username or password'],
+ ['请重新登录', 'Please log in again'],
+ ['操作失败,请稍后再试', 'Operation failed, please try again later'],
+ ['当前币对不存在', 'Trading pair does not exist'],
+ ['未开放合约交易', 'Contract trading is not available'],
+ ['停牌禁止交易', 'Trading suspended for this symbol'],
+ ['当前已经休市', 'Market is closed'],
+ ['订单不存在', 'Order does not exist'],
+ ['追加保证金异常', 'Failed to add margin'],
+ ['委托单不存在', 'Order does not exist'],
+ ['执行撤单异常', 'Failed to cancel order'],
+ ['无网络', 'Network unavailable'],
+ ['无权限', 'Permission denied'],
+ ['请登录!', 'Please log in'],
+ ['支付币种不正确', 'Invalid payment currency'],
+ ['提交失败,当前有未处理订单', 'Submission failed, pending order exists'],
+ ['用户未结束订单数量已达上限', 'Too many open orders'],
+ ['今日取消订单次数太多了,请明日再试', 'Too many cancellations today, try again tomorrow'],
+ ['广告不存在', 'Advertisement does not exist'],
+ ['支付方式不存在', 'Payment method does not exist'],
+ ['订单类型不正确', 'Invalid order type'],
+ ['支付金额不正确', 'Invalid payment amount'],
+ ['币种数量不正确', 'Invalid currency amount'],
+ ['承兑商的用户信息不存在', 'Merchant user info does not exist'],
+ ['请先通过高级认证', 'Advanced verification required'],
+ ['流水小于限额', 'Transaction volume below minimum limit'],
+ ['用户不能取消提现', 'Withdrawal cannot be cancelled'],
+ ['充值或提现不正确', 'Invalid deposit or withdrawal type'],
+ ['订单状态不正确', 'Invalid order status'],
+ ['承兑商不存在', 'Merchant does not exist'],
+ ['C2C广告id不正确', 'Invalid C2C advertisement ID'],
+ ['请上传图片', 'Please upload an image'],
+ ['提交失败,当前有未处理银行卡订单', 'Submission failed, pending bank order exists'],
+ ['申诉订单号不正确', 'Invalid appeal order number'],
+ ['请输入申诉原因', 'Please enter appeal reason'],
+ ['请上传申诉凭证', 'Please upload appeal evidence'],
+ ['该订单已提交申诉', 'Appeal already submitted for this order'],
+ ['申诉不存在', 'Appeal does not exist'],
+ ['订单号不能未空', 'Order number is required'],
+ ['当前支付方式有未处理完成的订单!', 'Pending orders exist for this payment method'],
+ ['广告id不正确', 'Invalid advertisement ID'],
+ ['承兑商支付方式未配置', 'Merchant payment method not configured'],
+ ['承兑商广告支付方式未配置', 'Merchant ad payment method not configured'],
+ ['图片大小不能超过4M', 'Image size cannot exceed 4MB'],
+ ['文件上传失败', 'File upload failed'],
+ ['实名认证未通过,无法进行高级认证', 'Real-name verification required before advanced verification'],
+ ['工作地址长度超过245', 'Work address exceeds 245 characters'],
+ ['家庭地址长度超过245', 'Home address exceeds 245 characters'],
+ ['该自选组名称已经使用', 'Watchlist name already in use'],
+ ['已经添加过该分组了', 'Group already added'],
+ ['自选组不存在', 'Watchlist group does not exist'],
+ ['谷歌验证码未绑定', 'Google Authenticator is not bound'],
+ ['谷歌验证码错误', 'Incorrect Google Authenticator code'],
+ ['用户不存在', 'User does not exist'],
+ ['推广码不存在', 'Promotion code does not exist'],
+ ['推广码已失效', 'Promotion code has expired'],
+ ['参数错误!', 'Invalid parameters'],
+];
+
+function walk(dir, files = []) {
+ for (const name of fs.readdirSync(dir)) {
+ const p = path.join(dir, name);
+ if (fs.statSync(p).isDirectory()) walk(p, files);
+ else if (name.endsWith('.java')) files.push(p);
+ }
+ return files;
+}
+
+let count = 0;
+for (const file of walk(apiRoot)) {
+ let text = fs.readFileSync(file, 'utf8');
+ const orig = text;
+ text = text.replace(/最低下单金额:/g, 'Minimum order amount: ');
+ text = text.replace(/最低下单金额:/g, 'Minimum order amount: ');
+ const sorted = [...pairs].sort((a, b) => b[0].length - a[0].length);
+ for (const [zh, en] of sorted) {
+ text = text.split(`YamiShopBindException("${zh}")`).join(`YamiShopBindException("${en}")`);
+ text = text.split(`new YamiShopBindException("${zh}")`).join(`new YamiShopBindException("${en}")`);
+ }
+ if (text !== orig) {
+ fs.writeFileSync(file, text, 'utf8');
+ count++;
+ console.log(file);
+ }
+}
+console.log('Updated', count, 'files');
diff --git a/scripts/translate_api_exceptions.ps1 b/scripts/translate_api_exceptions.ps1
new file mode 100644
index 0000000..e1c4563
--- /dev/null
+++ b/scripts/translate_api_exceptions.ps1
@@ -0,0 +1,128 @@
+$apiRoot = "d:\新版交易所\trading-order-master\trading-order-admin\src\main\java\com\yami\trading\api"
+$pairs = @(
+@("校验IP不合法","Invalid IP address"),
+@("资金密码不能为空","Fund password is required"),
+@("资金密码不符合设定","Fund password does not meet requirements"),
+@("请先登录","Please log in first"),
+@("用户名不能为空","Username is required"),
+@("密码不能为空","Password is required"),
+@("密码必须6-12位","Password must be 6-12 characters"),
+@("验证类型不能为空","Verification type is required"),
+@("验证码不能为空","Verification code is required"),
+@("用户名不存在","Username does not exist"),
+@("验证码不正确","Incorrect verification code"),
+@("用户名参数为空","Username is required"),
+@("请填写正确的电话号码","Please enter a valid phone number"),
+@("电话号码已绑定","Phone number is already bound"),
+@("电话号码已绑定其他用户","Phone number is bound to another user"),
+@("请填写正确的验证码","Please enter a valid verification code"),
+@("请输入推荐码","Please enter referral code"),
+@("推荐人无权限推荐","Referrer is not authorized to refer"),
+@("请填写正确的邮箱地址","Please enter a valid email address"),
+@("邮箱已绑定","Email is already bound"),
+@("邮箱已绑定其他用户","Email is bound to another user"),
+@("旧密码不能为空","Old password is required"),
+@("新密码不能为空","New password is required"),
+@("新密码确认不能为空","Password confirmation is required"),
+@("旧密码不正确!","Incorrect old password"),
+@("新密码不一致","New passwords do not match"),
+@("旧资金密码不能为空","Old fund password is required"),
+@("新资金密码不能为空","New fund password is required"),
+@("新资金密码确认不能为空","Fund password confirmation is required"),
+@("操作类型为空","Operation type is required"),
+@("操作类型不是整数","Operation type must be an integer"),
+@("操作类型不能小于0","Operation type cannot be negative"),
+@("备注长度超过250","Remark exceeds 250 characters"),
+@("请求第三方失败","Third-party request failed"),
+@("资金密码必须6-12位","Fund password must be 6-12 characters"),
+@("资金密码错误","Incorrect fund password"),
+@("订单不存在!","Order does not exist"),
+@("页码不是整数","Page number must be an integer"),
+@("页码不能小于等于0","Page number must be greater than 0"),
+@("k线图获取失败","Failed to load chart data"),
+@("请输入正确的货币数量","Please enter a valid amount"),
+@("请选择正确的币种","Please select a valid currency"),
+@("请稍后再试","Please try again later"),
+@("用户已禁用!","User account is disabled"),
+@("用户已禁用","User account is disabled"),
+@("系统错误,请稍后重试","System error, please try again later"),
+@("参数错误","Invalid parameters"),
+@("请输入正确的兑换数量","Please enter a valid exchange amount"),
+@("生成实时数据失败","Failed to generate market data"),
+@("状态不是整数","Status must be an integer"),
+@("状态不能小于0","Status cannot be negative"),
+@("证件号码长度超过50","ID number exceeds 50 characters"),
+@("实名姓名长度超过50","Real name exceeds 50 characters"),
+@("账号或密码不正确","Incorrect username or password"),
+@("请重新登录","Please log in again"),
+@("操作失败,请稍后再试","Operation failed, please try again later"),
+@("当前币对不存在","Trading pair does not exist"),
+@("未开放合约交易","Contract trading is not available"),
+@("停牌禁止交易","Trading suspended for this symbol"),
+@("当前已经休市","Market is closed"),
+@("订单不存在","Order does not exist"),
+@("追加保证金异常","Failed to add margin"),
+@("委托单不存在","Order does not exist"),
+@("执行撤单异常","Failed to cancel order"),
+@("无网络","Network unavailable"),
+@("无权限","Permission denied"),
+@("请登录!","Please log in"),
+@("支付币种不正确","Invalid payment currency"),
+@("提交失败,当前有未处理订单","Submission failed, pending order exists"),
+@("用户未结束订单数量已达上限","Too many open orders"),
+@("今日取消订单次数太多了,请明日再试","Too many cancellations today, try again tomorrow"),
+@("广告不存在","Advertisement does not exist"),
+@("支付方式不存在","Payment method does not exist"),
+@("订单类型不正确","Invalid order type"),
+@("支付金额不正确","Invalid payment amount"),
+@("币种数量不正确","Invalid currency amount"),
+@("承兑商的用户信息不存在","Merchant user info does not exist"),
+@("请先通过高级认证","Advanced verification required"),
+@("流水小于限额","Transaction volume below minimum limit"),
+@("用户不能取消提现","Withdrawal cannot be cancelled"),
+@("充值或提现不正确","Invalid deposit or withdrawal type"),
+@("订单状态不正确","Invalid order status"),
+@("承兑商不存在","Merchant does not exist"),
+@("C2C广告id不正确","Invalid C2C advertisement ID"),
+@("请上传图片","Please upload an image"),
+@("提交失败,当前有未处理银行卡订单","Submission failed, pending bank order exists"),
+@("申诉订单号不正确","Invalid appeal order number"),
+@("请输入申诉原因","Please enter appeal reason"),
+@("请上传申诉凭证","Please upload appeal evidence"),
+@("该订单已提交申诉","Appeal already submitted for this order"),
+@("申诉不存在","Appeal does not exist"),
+@("订单号不能未空","Order number is required"),
+@("当前支付方式有未处理完成的订单!","Pending orders exist for this payment method"),
+@("广告id不正确","Invalid advertisement ID"),
+@("承兑商支付方式未配置","Merchant payment method not configured"),
+@("承兑商广告支付方式未配置","Merchant ad payment method not configured"),
+@("图片大小不能超过4M","Image size cannot exceed 4MB"),
+@("文件上传失败","File upload failed"),
+@("实名认证未通过,无法进行高级认证","Real-name verification required before advanced verification"),
+@("工作地址长度超过245","Work address exceeds 245 characters"),
+@("家庭地址长度超过245","Home address exceeds 245 characters"),
+@("该自选组名称已经使用","Watchlist name already in use"),
+@("已经添加过该分组了","Group already added"),
+@("自选组不存在","Watchlist group does not exist"),
+@("谷歌验证码未绑定","Google Authenticator is not bound"),
+@("谷歌验证码错误","Incorrect Google Authenticator code"),
+@("用户不存在","User does not exist")
+)
+$files = Get-ChildItem -Path $apiRoot -Filter "*.java" -Recurse
+$count = 0
+foreach ($file in $files) {
+ $text = [System.IO.File]::ReadAllText($file.FullName, [System.Text.Encoding]::UTF8)
+ $orig = $text
+ $text = $text.Replace("最低下单金额:", "Minimum order amount: ")
+ $text = $text.Replace("最低下单金额:", "Minimum order amount: ")
+ foreach ($p in $pairs) {
+ $text = $text.Replace("YamiShopBindException(`"$($p[0])`")", "YamiShopBindException(`"$($p[1])`")")
+ $text = $text.Replace("new YamiShopBindException(`"$($p[0])`")", "new YamiShopBindException(`"$($p[1])`")")
+ }
+ if ($text -ne $orig) {
+ [System.IO.File]::WriteAllText($file.FullName, $text, [System.Text.UTF8Encoding]::new($false))
+ $count++
+ Write-Host $file.FullName
+ }
+}
+Write-Host "Updated $count files"
diff --git a/scripts/translate_api_exceptions.py b/scripts/translate_api_exceptions.py
new file mode 100644
index 0000000..2b33f84
--- /dev/null
+++ b/scripts/translate_api_exceptions.py
@@ -0,0 +1,150 @@
+# -*- coding: utf-8 -*-
+import os
+import re
+
+API_ROOT = os.path.join(
+ os.path.dirname(os.path.dirname(__file__)),
+ "trading-order-admin", "src", "main", "java", "com", "yami", "trading", "api",
+)
+
+ZH_TO_EN = {
+ "参数错误": "Invalid parameters",
+ "参数错误!": "Invalid parameters",
+ "系统错误,请稍后重试": "System error, please try again later",
+ "请稍后再试": "Please try again later",
+ "操作失败,请稍后再试": "Operation failed, please try again later",
+ "无权限": "Permission denied",
+ "无网络": "Network unavailable",
+ "请先登录": "Please log in first",
+ "请登录!": "Please log in",
+ "请重新登录": "Please log in again",
+ "用户已禁用": "User account is disabled",
+ "用户已禁用!": "User account is disabled",
+ "校验IP不合法": "Invalid IP address",
+ "账号或密码不正确": "Incorrect username or password",
+ "用户名不能为空": "Username is required",
+ "用户名不存在": "Username does not exist",
+ "用户名参数为空": "Username is required",
+ "密码不能为空": "Password is required",
+ "密码必须6-12位": "Password must be 6-12 characters",
+ "验证类型不能为空": "Verification type is required",
+ "验证码不能为空": "Verification code is required",
+ "验证码不正确": "Incorrect verification code",
+ "请填写正确的电话号码": "Please enter a valid phone number",
+ "电话号码已绑定": "Phone number is already bound",
+ "电话号码已绑定其他用户": "Phone number is bound to another user",
+ "请填写正确的验证码": "Please enter a valid verification code",
+ "请输入推荐码": "Please enter referral code",
+ "推荐人无权限推荐": "Referrer is not authorized to refer",
+ "请填写正确的邮箱地址": "Please enter a valid email address",
+ "邮箱已绑定": "Email is already bound",
+ "邮箱已绑定其他用户": "Email is bound to another user",
+ "旧密码不能为空": "Old password is required",
+ "新密码不能为空": "New password is required",
+ "新密码确认不能为空": "Password confirmation is required",
+ "旧密码不正确!": "Incorrect old password",
+ "新密码不一致": "New passwords do not match",
+ "资金密码不能为空": "Fund password is required",
+ "资金密码不符合设定": "Fund password does not meet requirements",
+ "资金密码必须6-12位": "Fund password must be 6-12 characters",
+ "资金密码错误": "Incorrect fund password",
+ "旧资金密码不能为空": "Old fund password is required",
+ "新资金密码不能为空": "New fund password is required",
+ "新资金密码确认不能为空": "Fund password confirmation is required",
+ "操作类型为空": "Operation type is required",
+ "操作类型不是整数": "Operation type must be an integer",
+ "操作类型不能小于0": "Operation type cannot be negative",
+ "备注长度超过250": "Remark exceeds 250 characters",
+ "请求第三方失败": "Third-party request failed",
+ "订单不存在!": "Order does not exist",
+ "页码不是整数": "Page number must be an integer",
+ "页码不能小于等于0": "Page number must be greater than 0",
+ "k线图获取失败": "Failed to load chart data",
+ "请输入正确的货币数量": "Please enter a valid amount",
+ "请选择正确的币种": "Please select a valid currency",
+ "请输入正确的兑换数量": "Please enter a valid exchange amount",
+ "生成实时数据失败": "Failed to generate market data",
+ "状态不是整数": "Status must be an integer",
+ "状态不能小于0": "Status cannot be negative",
+ "证件号码长度超过50": "ID number exceeds 50 characters",
+ "实名姓名长度超过50": "Real name exceeds 50 characters",
+ "当前币对不存在": "Trading pair does not exist",
+ "未开放合约交易": "Contract trading is not available",
+ "停牌禁止交易": "Trading suspended for this symbol",
+ "当前已经休市": "Market is closed",
+ "订单不存在": "Order does not exist",
+ "追加保证金异常": "Failed to add margin",
+ "委托单不存在": "Order does not exist",
+ "执行撤单异常": "Failed to cancel order",
+ "支付币种不正确": "Invalid payment currency",
+ "提交失败,当前有未处理订单": "Submission failed, pending order exists",
+ "用户未结束订单数量已达上限": "Too many open orders",
+ "今日取消订单次数太多了,请明日再试": "Too many cancellations today, try again tomorrow",
+ "广告不存在": "Advertisement does not exist",
+ "支付方式不存在": "Payment method does not exist",
+ "订单类型不正确": "Invalid order type",
+ "支付金额不正确": "Invalid payment amount",
+ "币种数量不正确": "Invalid currency amount",
+ "承兑商的用户信息不存在": "Merchant user info does not exist",
+ "请先通过高级认证": "Advanced verification required",
+ "流水小于限额": "Transaction volume below minimum limit",
+ "用户不能取消提现": "Withdrawal cannot be cancelled",
+ "充值或提现不正确": "Invalid deposit or withdrawal type",
+ "订单状态不正确": "Invalid order status",
+ "承兑商不存在": "Merchant does not exist",
+ "C2C广告id不正确": "Invalid C2C advertisement ID",
+ "请上传图片": "Please upload an image",
+ "提交失败,当前有未处理银行卡订单": "Submission failed, pending bank order exists",
+ "申诉订单号不正确": "Invalid appeal order number",
+ "请输入申诉原因": "Please enter appeal reason",
+ "请上传申诉凭证": "Please upload appeal evidence",
+ "该订单已提交申诉": "Appeal already submitted for this order",
+ "申诉不存在": "Appeal does not exist",
+ "订单号不能未空": "Order number is required",
+ "当前支付方式有未处理完成的订单!": "Pending orders exist for this payment method",
+ "广告id不正确": "Invalid advertisement ID",
+ "承兑商支付方式未配置": "Merchant payment method not configured",
+ "承兑商广告支付方式未配置": "Merchant ad payment method not configured",
+ "图片大小不能超过4M": "Image size cannot exceed 4MB",
+ "文件上传失败": "File upload failed",
+ "实名认证未通过,无法进行高级认证": "Real-name verification required before advanced verification",
+ "工作地址长度超过245": "Work address exceeds 245 characters",
+ "家庭地址长度超过245": "Home address exceeds 245 characters",
+ "该自选组名称已经使用": "Watchlist name already in use",
+ "已经添加过该分组了": "Group already added",
+ "自选组不存在": "Watchlist group does not exist",
+ "谷歌验证码未绑定": "Google Authenticator is not bound",
+ "谷歌验证码错误": "Incorrect Google Authenticator code",
+ "用户不存在": "User does not exist",
+ "用户已禁用!": "User account is disabled",
+ "推广码不存在": "Promotion code does not exist",
+ "推广码已失效": "Promotion code has expired",
+}
+
+
+def main():
+ items = sorted(ZH_TO_EN.items(), key=lambda x: -len(x[0]))
+ changed = 0
+ for dirpath, _, files in os.walk(API_ROOT):
+ for fn in files:
+ if not fn.endswith(".java"):
+ continue
+ path = os.path.join(dirpath, fn)
+ with open(path, "r", encoding="utf-8") as f:
+ text = f.read()
+ orig = text
+ text = text.replace("最低下单金额:", "Minimum order amount: ")
+ text = text.replace("最低下单金额:", "Minimum order amount: ")
+ for zh, en in items:
+ text = text.replace(f'YamiShopBindException("{zh}")', f'YamiShopBindException("{en}")')
+ text = text.replace(f"new YamiShopBindException(\"{zh}\")", f'new YamiShopBindException("{en}")')
+ if text != orig:
+ with open(path, "w", encoding="utf-8", newline="\n") as f:
+ f.write(text)
+ changed += 1
+ print(path)
+ print("updated files:", changed)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
index f56d53f..e15645c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
@@ -158,9 +158,9 @@
market = new StockMarket();
market.setTime_zone( "America/New_York");
if(MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType())){
- market.setStatus("交易中");
+ market.setStatus("Trading");
}else{
- market.setStatus("未开盘");
+ market.setStatus("Not open");
}
market.calculate();
map.put("market", market);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApGoogleAuthController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApGoogleAuthController.java
index 2843a2b..d928f20 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApGoogleAuthController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApGoogleAuthController.java
@@ -63,7 +63,7 @@
if (flag) {
User user = userService.getById(userId);
if (user.isGoogleAuthBind()) {
- throw new YamiShopBindException("谷歌验证码已绑定");
+ throw new YamiShopBindException("Google Authenticator is already bound");
}
user.setGoogleAuthBind(true);
user.setGoogleAuthSecret(model.getSecret());
@@ -75,7 +75,7 @@
map.put("google_auth_bind",true);
return Result.succeed(map);
} else {
- throw new YamiShopBindException("谷歌验证码错误");
+ throw new YamiShopBindException("Incorrect Google Authenticator code");
}
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
index 585e685..6e37530 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
@@ -87,7 +87,7 @@
if (null == cpmMap || 0 == cpmMap.size()) {
// TODO: 2023/4/16
- throw new YamiShopBindException("支付方式不存在");
+ throw new YamiShopBindException("Payment method does not exist");
}
List<String> cpmList = new ArrayList<String>();
for (String key : cpmMap.keySet()) {
@@ -101,27 +101,27 @@
private String verif(String direction, String nationality, String currency, String payment_method_id, String coin_amount, String img) {
if (StringUtils.isEmptyString(direction) || !Arrays.asList("recharge", "withdraw").contains(direction)) {
- return "充值或提现不正确";
+ return "Invalid recharge or withdrawal type";
}
Map<String, String> currencyMap = this.c2cPaymentMethodService.getCurrencyMap();
if (StringUtils.isEmptyString(currency) || null == currencyMap || (null != currencyMap && !currencyMap.containsKey(currency))) {
- return "支付币种不正确";
+ return "Invalid payment currency";
}
if (StringUtils.isEmptyString(payment_method_id)) {
- return "支付方式不正确";
+ return "Invalid payment method";
}
if (StringUtils.isEmptyString(coin_amount) || !StringUtils.isDouble(coin_amount) || Double.valueOf(coin_amount).doubleValue() <= 0) {
- return "交易数量不正确";
+ return "Invalid transaction amount";
}
if ("recharge".equals(direction)) {
if (StringUtils.isEmptyString(nationality)) {
- return "国家/地区不正确";
+ return "Invalid country or region";
}
// 银行卡充值是否强制需要上传图片,需要true,不需要false
boolean bank_card_recharge_must_need_img = this.sysparaService.find("bank_card_recharge_must_need_img").getBoolean();
if (bank_card_recharge_must_need_img) {
if (StringUtils.isEmptyString(img)) {
- return "请上传图片";
+ return "Please upload an image";
}
}
}
@@ -232,15 +232,15 @@
Object object = this.sessionTokenService.cacheGet(session_token);
this.sessionTokenService.del(session_token);
if (null == object || !userId.equals((String) object)) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
String partyId = SecurityUtils.getUser().getUserId();
if (null == partyId) {
- throw new YamiShopBindException("请重新登录");
+ throw new YamiShopBindException("Please log in again");
}
User party = userService.getById(partyId);
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
if (!party.isEnabled()) {
throw new YamiShopBindException("User is locked");
@@ -272,7 +272,7 @@
party_kyc=new RealNameAuthRecord();
}
if (!(party_kyc.getStatus() == 2) && "true".equals(this.sysparaService.find("withdraw_by_kyc").getSvalue())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
HighLevelAuthRecord party_kycHighLevel = highLevelAuthRecordService.findByUserId(partyId);
if (party_kycHighLevel==null){
@@ -280,7 +280,7 @@
}
double withdraw_by_high_kyc = Double.valueOf(this.sysparaService.find("withdraw_by_high_kyc").getSvalue());
if (withdraw_by_high_kyc > 0 && coin_amount_double > withdraw_by_high_kyc && !(party_kycHighLevel.getStatus() == 2)) {
- throw new YamiShopBindException("请先通过高级认证");
+ throw new YamiShopBindException("Advanced verification required");
}
// if (!party.getWithdraw_authority()) {
// throw new BusinessException(1, "无权限");
@@ -390,7 +390,7 @@
// 流水小于限额
if (userdata_turnover < party_withdraw) {
fact_withdraw_amount = Arith.sub(party_withdraw, userdata_turnover);
- throw new YamiShopBindException("流水小于限额");
+ throw new YamiShopBindException("Transaction volume below minimum limit");
}
}
if ("2".equals(withdraw_limit_open_use_type)) {
@@ -421,13 +421,13 @@
Object obj1 = this.sysparaService.find("bank_card_order_cancel_day_times");
if (null != obj1) {
if (orderCancelDayTimes >= Integer.valueOf(this.sysparaService.find("bank_card_order_cancel_day_times").getSvalue()).intValue()) {
- throw new YamiShopBindException("今日取消订单次数太多了,请明日再试");
+ throw new YamiShopBindException("Too many cancellations today, try again tomorrow");
}
}
DecimalFormat df = new DecimalFormat("#.########");
ExchangeRate ex = this.exchangeRateService.findBy(Constants.OUT_OR_IN_DEFAULT, currency.toUpperCase());
if (null == ex) {
- throw new YamiShopBindException("支付币种不正确");
+ throw new YamiShopBindException("Invalid payment currency");
}
C2cOrder c2cOrder = new C2cOrder();
c2cOrder.setPartyId(party.getUserId());
@@ -458,20 +458,20 @@
public Result orderCancel(String order_no, String remark) {
User party = userService.getById(SecurityUtils.getUser().getUserId());
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
if (!party.isEnabled()) {
throw new YamiShopBindException("User is locked");
}
C2cOrder order = this.c2cOrderService.get(order_no);
if (null == order || !order.getPartyId().equals(SecurityUtils.getUser().getUserId())) {
- throw new YamiShopBindException("订单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
order.setRemark(remark);
// 用户不能取消提现
if (SecurityUtils.getUser().getUserId().equals(order.getPartyId())) {
if ("withdraw".equals(order.getDirection())) {
- throw new YamiShopBindException("用户不能取消提现");
+ throw new YamiShopBindException("Withdrawal cannot be cancelled");
}
this.c2cOrderService.saveOrderCancel(order, "user");
}
@@ -486,7 +486,7 @@
public Result get(@RequestParam String order_no, @RequestParam String language) {
C2cOrder c2cOrder = this.c2cOrderService.get(order_no);
if (null == c2cOrder) {
- throw new YamiShopBindException("订单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
List<String> nos = new ArrayList<String>();
nos.add(c2cOrder.getOrderNo());
@@ -548,23 +548,23 @@
public Result list(String page_no, String direction, String state) {
String partyId = SecurityUtils.getUser().getUserId();
if (null == partyId) {
- throw new YamiShopBindException("请重新登录");
+ throw new YamiShopBindException("Please log in again");
}
if (StringUtils.isNullOrEmpty(page_no)) {
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
if (StringUtils.isNotEmpty(direction) && !Arrays.asList("recharge", "withdraw").contains(direction)) {
- throw new YamiShopBindException("充值或提现不正确");
+ throw new YamiShopBindException("Invalid deposit or withdrawal type");
}
if (StringUtils.isNotEmpty(state) && !Arrays.asList("0", "3", "4").contains(state)) {
- throw new YamiShopBindException("订单状态不正确");
+ throw new YamiShopBindException("Invalid order status");
}
Page page = this.c2cOrderService.pagedQuery(page_no_int, 20, direction, state, partyId);
if (null == page) {
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAdvertController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAdvertController.java
index 4dacfb4..cd555c6 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAdvertController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAdvertController.java
@@ -159,17 +159,17 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
String partyId = SecurityUtils.getUser().getUserId();
String c2cUserId = "";
User party = userService.getById(partyId);
if (null == party) {
- throw new YamiShopBindException("用户不存在");
+ throw new YamiShopBindException("User does not exist");
}
if (Arrays.asList(1, 2).contains(party.getC2cUserType())) {
C2cUser c2cUser = c2cUserService.getByPartyId(partyId);
@@ -451,19 +451,19 @@
String id = request.getParameter("id");
String language = request.getParameter("language");
if (StringUtils.isEmptyString(id)) {
- throw new YamiShopBindException("C2C广告id不正确");
+ throw new YamiShopBindException("Invalid C2C advertisement ID");
}
C2cAdvert c2cAdvert = c2cAdvertService.getById(id);
if (null == c2cAdvert) {
- throw new YamiShopBindException("广告不存在");
+ throw new YamiShopBindException("Advertisement does not exist");
}
C2cUser c2cUser = this.c2cUserService.getById(c2cAdvert.getC2cUserId());
if (null == c2cUser) {
- throw new YamiShopBindException("承兑商不存在");
+ throw new YamiShopBindException("Merchant does not exist");
}
User c2cParty = userService.getById(c2cUser.getC2cUserPartyId());
if (null == c2cParty) {
- throw new YamiShopBindException("承兑商的用户信息不存在");
+ throw new YamiShopBindException("Merchant user info does not exist");
}
Map<String, String> data = new HashMap<String, String>();
data.put("id", c2cAdvert.getUuid().toString());
@@ -563,22 +563,22 @@
//
private String verif(String direction, String currency, String symbol, String method_type, String amount) {
if (!StringUtils.isEmptyString(direction) && !Arrays.asList("buy", "sell").contains(direction)) {
- return "买卖方式不正确";
+ return "Invalid trade direction";
}
Map<String, String> currencyMap = this.c2cAdvertService.getCurrencyMap();
Map<String, String> symbolMap = this.c2cAdvertService.getSymbolMap();
if (!StringUtils.isEmptyString(currency) && null != currencyMap && !currencyMap.containsKey(currency)) {
- return "支付币种不正确";
+ return "Invalid payment currency";
}
if (!StringUtils.isEmptyString(symbol) && null != symbolMap && !symbolMap.containsKey(symbol)) {
- return "上架币种不正确";
+ return "Invalid listed currency";
}
Map<String, String> pmtMap = this.c2cAdvertService.getC2cSyspara("c2c_payment_method_type");
if (!StringUtils.isEmptyString(method_type) && !pmtMap.keySet().contains(method_type)) {
- return "支付方式类型不正确";
+ return "Invalid payment method type";
}
if (!StringUtils.isEmptyString(amount) && (!StringUtils.isDouble(amount) || Double.valueOf(amount).doubleValue() < 0)) {
- return "支付金额不正确";
+ return "Invalid payment amount";
}
return null;
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAppealController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAppealController.java
index bcea1e4..7cb5e8b 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAppealController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cAppealController.java
@@ -53,22 +53,22 @@
String name = request.getParameter("name");
String phone = request.getParameter("phone");
if (StringUtils.isEmptyString(order_no)) {
- throw new YamiShopBindException("申诉订单号不正确");
+ throw new YamiShopBindException("Invalid appeal order number");
}
if (StringUtils.isEmptyString(reason)) {
- throw new YamiShopBindException("请输入申诉原因");
+ throw new YamiShopBindException("Please enter appeal reason");
}
if (StringUtils.isEmptyString(img)) {
- throw new YamiShopBindException("请上传申诉凭证");
+ throw new YamiShopBindException("Please upload appeal evidence");
}
String partyId = SecurityUtils.getUser().getUserId();
C2cOrder order = this.c2cOrderService.get(order_no);
if (null == order || !partyId.equals(order.getPartyId())) {
- throw new YamiShopBindException("订单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
C2cAppeal appeal = this.c2cAppealService.findByOrderNo(order_no);
if (null != appeal) {
- throw new YamiShopBindException("该订单已提交申诉");
+ throw new YamiShopBindException("Appeal already submitted for this order");
}
C2cAppeal entity = new C2cAppeal();
entity.setOrderNo(order_no);
@@ -97,11 +97,11 @@
public Result get(HttpServletRequest request) throws IOException {
String order_no = request.getParameter("order_no");
if (StringUtils.isEmptyString(order_no)) {
- throw new YamiShopBindException("申诉订单号不正确");
+ throw new YamiShopBindException("Invalid appeal order number");
}
C2cAppeal c2cAppeal = this.c2cAppealService.findByOrderNo(order_no);
if (null == c2cAppeal) {
- throw new YamiShopBindException("申诉不存在");
+ throw new YamiShopBindException("Appeal does not exist");
}
if (StringUtils.isNotEmpty(c2cAppeal.getImg())) {
String path = Constants.IMAGES_HTTP+c2cAppeal.getImg();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
index b87c16c..779392e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
@@ -63,7 +63,7 @@
public Object order_open(HttpServletRequest request) throws IOException {
String currency = request.getParameter("currency");
if (StringUtils.isEmptyString(currency)) {
- throw new YamiShopBindException("支付币种不正确");
+ throw new YamiShopBindException("Invalid payment currency");
}
String partyId = SecurityUtils.getCurrentUserId();
String session_token = sessionTokenService.savePut(partyId);
@@ -111,7 +111,7 @@
party = userService.getById(partyId);
log.error("用户"+direction+"开始当前用户uid:"+party.getUserCode()+"当前用户名:"+party.getUserName()+"生成的订单号:"+orderNo);
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
if (!C2cLock.add(partyId)) {
@@ -122,7 +122,7 @@
Object object = this.sessionTokenService.cacheGet(session_token);
this.sessionTokenService.del(session_token);
if (null == object || !partyId.equals((String) object)) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
if (!party.isEnabled()) {
@@ -135,14 +135,14 @@
String c2c_sell_only_one = sysparaService.find("c2c_sell_only_one").getSvalue();
if(StringUtils.isNotEmpty(c2c_sell_only_one)&&"1".equals(c2c_sell_only_one)) {
if(nofinishOrderCount >= 1) {
- throw new YamiShopBindException("提交失败,当前有未处理订单");
+ throw new YamiShopBindException("Submission failed, pending order exists");
}
Long.valueOf(c2c_sell_only_one).longValue();
}
Object obj2 = this.sysparaService.find("c2c_nofinish_order_count_max");
if (null != obj2) {
if (nofinishOrderCount >= Long.valueOf(this.sysparaService.find("c2c_nofinish_order_count_max").getSvalue()).longValue()) {
- throw new YamiShopBindException("用户未结束订单数量已达上限");
+ throw new YamiShopBindException("Too many open orders");
}
}
@@ -163,34 +163,34 @@
Object obj1 = this.sysparaService.find("c2c_order_cancel_day_times");
if (null != obj1) {
if (orderCancelDayTimes >= Integer.valueOf(this.sysparaService.find("c2c_order_cancel_day_times").getSvalue()).intValue()) {
- throw new YamiShopBindException("今日取消订单次数太多了,请明日再试");
+ throw new YamiShopBindException("Too many cancellations today, try again tomorrow");
}
}
C2cAdvert c2cAdvert = this.c2cAdvertService.getById(c2c_advert_id);
if (null == c2cAdvert) {
- throw new YamiShopBindException("广告不存在");
+ throw new YamiShopBindException("Advertisement does not exist");
}
C2cPaymentMethod method =c2cPaymentMethodService.get(payment_method_id);
if (null == method) {
- throw new YamiShopBindException("支付方式不存在");
+ throw new YamiShopBindException("Payment method does not exist");
}
if (StringUtils.isEmptyString(order_type) || !Arrays.asList("by_amount", "by_num").contains(order_type)) {
- throw new YamiShopBindException("订单类型不正确");
+ throw new YamiShopBindException("Invalid order type");
}
if (C2cOrder.ORDER_TYPE_BY_AMOUNT.equals(order_type)) {
// 按支付金额支付
if (StringUtils.isEmptyString(amount) || !StringUtils.isDouble(amount) || Double.valueOf(amount).doubleValue() <= 0) {
- throw new YamiShopBindException("支付金额不正确");
+ throw new YamiShopBindException("Invalid payment amount");
}
coin_amount = "0";
} else {
// 按币种数量支付
if (StringUtils.isEmptyString(coin_amount) || !StringUtils.isDouble(coin_amount) || Double.valueOf(coin_amount).doubleValue() <= 0) {
- throw new YamiShopBindException("币种数量不正确");
+ throw new YamiShopBindException("Invalid currency amount");
}
amount = "0";
}
@@ -247,16 +247,16 @@
String partyId = SecurityUtils.getCurrentUserId();
if (null == partyId) {
- throw new BusinessException("请重新登录");
+ throw new BusinessException("Please log in again");
}
User party = userService.getById(partyId);
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new BusinessException("无权限");
+ throw new BusinessException("Permission denied");
}
if (!userService.checkLoginSafeword(partyId, safe_password)) {
- throw new BusinessException("资金密码错误");
+ throw new BusinessException("Incorrect fund password");
}
if (!party.isEnabled()) {
@@ -265,29 +265,29 @@
C2cOrder order = this.c2cOrderService.get(order_no);
if (null == order) {
- throw new BusinessException("订单不存在");
+ throw new BusinessException("Order does not exist");
}
if (partyId.equals(order.getPartyId())) {
// 用户操作
if (!"buy".equals(order.getDirection())) {
- throw new BusinessException("用户不能支付卖单");
+ throw new BusinessException("User cannot pay for a sell order");
}
} else if (partyId.equals(order.getC2cUserPartyId())) {
// 承兑商操作
if (!"sell".equals(order.getDirection())) {
- throw new BusinessException("承兑商不能支付买单");
+ throw new BusinessException("Merchant cannot pay for a buy order");
}
} else {
- throw new BusinessException("无权限");
+ throw new BusinessException("Permission denied");
}
if (!"0".equals(order.getState())) {
- throw new BusinessException("订单不是未付款状态");
+ throw new BusinessException("Order is not in unpaid status");
}
if (!C2cOrderLock.add(order_no)) {
- throw new BusinessException(1, "请稍后再试");
+ throw new BusinessException(1, "Please try again later");
}
lock = true;
@@ -356,22 +356,22 @@
String partyId = SecurityUtils.getCurrentUserId();
if (null == partyId) {
- throw new BusinessException("请重新登录");
+ throw new BusinessException("Please log in again");
}
User party = userService.getById(partyId);
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new BusinessException("无权限");
+ throw new BusinessException("Permission denied");
}
if (!C2cOrderLock.add(order_no)) {
- throw new BusinessException(1, "请稍后再试");
+ throw new BusinessException(1, "Please try again later");
}
lock = true;
if (!userService.checkLoginSafeword(partyId, safe_password)) {
- throw new BusinessException("资金密码错误");
+ throw new BusinessException("Incorrect fund password");
}
if (!party.isEnabled()) {
return Result.succeed("User is locked");
@@ -379,10 +379,10 @@
C2cOrder order = this.c2cOrderService.get(order_no);
if (null == order || !order.getPartyId().equals(partyId)) {
- throw new BusinessException("订单不存在");
+ throw new BusinessException("Order does not exist");
}
if ("0".equals(order.getState())) {
- throw new BusinessException("待付款的订单无法放行");
+ throw new BusinessException("Unpaid order cannot be released");
}
if ("3".equals(order.getState())) {
resultObject.setCode(0);
@@ -390,7 +390,7 @@
//throw new BusinessException("订单已完成,无法放行");
}
if ("4".equals(order.getState())) {
- throw new BusinessException("订单已取消,无法放行");
+ throw new BusinessException("Cancelled order cannot be released");
}
this.c2cOrderService.saveOrderPass(order);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cPaymentMethodConfigController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cPaymentMethodConfigController.java
index 0db676c..d3851c2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cPaymentMethodConfigController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cPaymentMethodConfigController.java
@@ -58,7 +58,7 @@
String language = request.getParameter("language");
C2cPaymentMethodConfig config = this.c2cPaymentMethodConfigService.getById(id);
if (null == config) {
- throw new BusinessException("支付方式模板不存在");
+ throw new BusinessException("Payment method template does not exist");
}
if (StringUtils.isNotEmpty(config.getMethodImg())) {
String path = Constants.IMAGES_HTTP+config.getMethodImg();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cUserController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cUserController.java
index 9e43987..11df31e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cUserController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cUserController.java
@@ -71,12 +71,12 @@
C2cUser c2cUser = this.c2cUserService.getById(c2c_user_id);
if (null == c2cUser) {
- throw new BusinessException("承兑商不存在");
+ throw new BusinessException("Merchant does not exist");
}
C2cUserParamBaseSet paramBaseSet = this.c2cUserParamBaseSetService.getByPartyId(c2cUser.getC2cUserPartyId());
if (null == paramBaseSet) {
- throw new BusinessException("承兑商参数基础设置不存在");
+ throw new BusinessException("Merchant base settings do not exist");
}
if (StringUtils.isNotEmpty(c2cUser.getHeadImg())) {
@@ -86,7 +86,7 @@
User party = userService.getById(c2cUser.getC2cUserPartyId());
if (null == party) {
- throw new YamiShopBindException("承兑商的用户信息不存在");
+ throw new YamiShopBindException("Merchant user info does not exist");
}
DecimalFormat df = new DecimalFormat("#.########");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiCapitaltWalletWalletController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiCapitaltWalletWalletController.java
index c6ab84a..74a6922 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiCapitaltWalletWalletController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiCapitaltWalletWalletController.java
@@ -77,7 +77,7 @@
public Result updateWallt(@Valid TransferModel model) {
String partyId = SecurityUtils.getCurrentUserId();
if(!StringUtils.isNotEmpty(partyId)){
- throw new YamiShopBindException("请登录!");
+ throw new YamiShopBindException("Please log in");
}
return capitaltWalletService.updateWallt(partyId,model.getDeductAccount(),model.getReceiveAccount(),model.getMoneyRevise());
}
@@ -87,7 +87,7 @@
public Result updateWallt() {
String partyId = SecurityUtils.getCurrentUserId();
if(!StringUtils.isNotEmpty(partyId)){
- throw new YamiShopBindException("请登录!");
+ throw new YamiShopBindException("Please log in");
}
// 获取合约账户(contract)
Wallet wallet = walletService.saveWalletByPartyId(partyId);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
index d05f720..5829dce 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -204,7 +204,7 @@
lockAcquired = rLock.tryLock(5, TimeUnit.SECONDS);
if (!lockAcquired) {
log.warn("无法获取锁: contract_open_{}", partyId);
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
//判断下单金额是否符合最低金额 最低下单张数:0.01
//合约张数 张数=保证金*杠杆倍数/(面值*最新成交价)
@@ -213,7 +213,7 @@
if (amount.compareTo(new BigDecimal(faceValue)) < 0) {
double minimumAmount = minAmount * faceValue * openAction.getPrice().doubleValue() / openAction.getLever_rate().doubleValue();
double roundedAmount = Math.ceil(minimumAmount * 10000) / 10000;
- throw new YamiShopBindException("最低下单金额:"+roundedAmount);
+ throw new YamiShopBindException("Minimum order amount: "+roundedAmount);
}
// 校验当前用户订单状态
@@ -233,7 +233,7 @@
throw e; // 重新抛出自定义异常
} catch (Exception e) {
log.error("系统异常: {}", e.getMessage(), e);
- throw new YamiShopBindException("操作失败,请稍后再试");
+ throw new YamiShopBindException("Operation failed, please try again later");
} finally {
// 确保释放锁
if (lockAcquired && rLock.isHeldByCurrentThread()) {
@@ -277,7 +277,7 @@
String[] stopUsers = stopUserInternet.split(",");
User user = userService.getById(partyId);
if (Arrays.asList(stopUsers).contains(user.getUserName())) {
- throw new YamiShopBindException("无网络");
+ throw new YamiShopBindException("Network unavailable");
}
}
}
@@ -313,7 +313,7 @@
RLock rLock = redissonClient.getLock("contract_close_" + partyId);
boolean lockResult = rLock.tryLock(5, TimeUnit.SECONDS);
if (!lockResult) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
try {
User user = userService.getById(partyId);
@@ -330,7 +330,7 @@
System.out.println("stopUserInternet = " + stopUserInternet);
if(Arrays.asList(stopUsers).contains(user.getUserName())){
- throw new YamiShopBindException("无网络");
+ throw new YamiShopBindException("Network unavailable");
}
}
@@ -401,7 +401,7 @@
ContractApplyOrder order = this.contractApplyOrderService.findByOrderNo(order_no);
if (order == null) {
- throw new YamiShopBindException("委托单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("order_no", order.getOrderNo());
@@ -450,7 +450,7 @@
} catch (Exception e) {
log.error("执行撤单异常", e);
- throw new YamiShopBindException("执行撤单异常");
+ throw new YamiShopBindException("Failed to cancel order");
}
return Result.succeed(null,"success");
@@ -468,7 +468,7 @@
} catch (Exception e) {
log.error("执行撤单异常", e);
- throw new YamiShopBindException("执行撤单异常");
+ throw new YamiShopBindException("Failed to cancel order");
}
return Result.succeed(null,"success");
@@ -559,10 +559,10 @@
Page<ContractApplyOrder> result = contractApplyOrderService.findList(page, SecurityUtils.getUser().getUserId(), type, symbolType);
List<ContractApplyOrder> datas = result.getRecords();
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
Long count = 0L;
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java
index 65c5b1f..1d987b6 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java
@@ -63,7 +63,7 @@
t.start();
} catch (Exception e) {
log.error("平仓失败", e);
- return Result.failed("平仓失败");
+ return Result.failed("Failed to close position");
}
return Result.succeed("平仓成功");
@@ -79,7 +79,7 @@
}
} catch (Exception e) {
log.error("追加保证金异常", e);
- throw new YamiShopBindException("追加保证金异常");
+ throw new YamiShopBindException("Failed to add margin");
}
return Result.succeed("success");
}
@@ -97,7 +97,7 @@
}
} catch (Exception e) {
log.error("追加保证金异常", e);
- throw new YamiShopBindException("追加保证金异常");
+ throw new YamiShopBindException("Failed to add margin");
}
return Result.succeed("success");
}
@@ -117,7 +117,7 @@
} catch (Exception e) {
log.error("一键平仓失败", e);
- return Result.failed("一键平仓失败");
+ return Result.failed("Failed to close all positions");
}
return Result.succeed("一键平仓成功");
@@ -215,7 +215,7 @@
if (null == order) {
log.info("contractOrder!get order_no:" + order_no + ", order null");
- throw new YamiShopBindException("订单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
return Result.ok(this.contractOrderService.bulidOne(order));
@@ -256,10 +256,10 @@
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
String partyId = SecurityUtils.getCurrentUserId();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
index 04fb253..c3d6d61 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -75,7 +75,7 @@
Map<String, Object> data = new HashMap<>();
Item bySymbol = itemService.findBySymbol(symbol);
if(bySymbol == null){
- throw new YamiShopBindException("当前币对不存在");
+ throw new YamiShopBindException("Trading pair does not exist");
}
List<Map<String,Object>> futuresParas = new ArrayList<>();
for (FuturesPara para : this.futuresParaService.getBySymbolSort(symbol)) {
@@ -142,19 +142,19 @@
public Result<Map<String, String>> open(FutureOpenAction futureOpenAction) {
Item bySymbol = itemService.findBySymbol(futureOpenAction.getSymbol());
if(bySymbol == null){
- throw new YamiShopBindException("当前币对不存在");
+ throw new YamiShopBindException("Trading pair does not exist");
}
if (!itemService.isContractTrading(bySymbol)) {
- throw new YamiShopBindException("未开放合约交易");
+ throw new YamiShopBindException("Contract trading is not available");
}
/*if (itemService.isSuspended(bySymbol.getSymbol())) {
- throw new YamiShopBindException("停牌禁止交易");
+ throw new YamiShopBindException("Trading suspended for this symbol");
}*/
boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType());
if(!isOpen){
- throw new YamiShopBindException("当前已经休市");
+ throw new YamiShopBindException("Market is closed");
}
String partyId = SecurityUtils.getUser().getUserId();
boolean lock = false;
@@ -163,7 +163,7 @@
Map<String, String> data = new HashMap<String, String>();
if (!FuturesLock.add(partyId)) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
lock = true;
@@ -175,7 +175,7 @@
throw new YamiShopBindException("User is locked");
}
if (null == object || !party.getUserId().equals((String) object)) {
- throw new BusinessException("请稍后再试");
+ throw new BusinessException("Please try again later");
}
FuturesOrder order = new FuturesOrder();
@@ -240,7 +240,7 @@
FuturesOrder order = this.futuresOrderService.cacheByOrderNo(order_no);
if (null == order) {
log.info("futuresOrder!get order_no:" + order_no + ", order null");
- throw new YamiShopBindException("订单不存在");
+ throw new YamiShopBindException("Order does not exist");
}
return Result.succeed(this.futuresOrderService.bulidOne(order));
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiHighLevelAuthController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiHighLevelAuthController.java
index 372890c..7e43a18 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiHighLevelAuthController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiHighLevelAuthController.java
@@ -48,20 +48,20 @@
public Result applyHighLevelAuth(@Valid ApplyHighLevelAuthModel model) {
User user = userCacheService.currentUser();
if (!realNameAuthRecordService.isPass(user.getUserId())) {
- throw new YamiShopBindException("实名认证未通过,无法进行高级认证");
+ throw new YamiShopBindException("Real-name verification required before advanced verification");
}
HighLevelAuthRecord highLevelAuthRecord = highLevelAuthRecordService.findByUserId(user.getUserId());
if (highLevelAuthRecord != null) {
String msg = "";
switch (highLevelAuthRecord.getStatus()) {
case 0:
- msg = "已经提交申请,请等待审核";
+ msg = "Application submitted, please wait for review";
break;
case 1:
- msg = "审核中";
+ msg = "Under review";
break;
case 2:
- msg = "审核已通过";
+ msg = "Already approved";
break;
case 3:
highLevelAuthRecord.setStatus(1);
@@ -71,7 +71,7 @@
// msg = MessageFormat.format("审核未通过,原因:{0}", record.getMsg());
break;
default:
- msg = "审核状态异常请联系客服";
+ msg = "Abnormal review status, please contact support";
break;
}
if (StrUtil.isNotBlank(msg)) {
@@ -85,34 +85,34 @@
if (StrUtil.isNotBlank(model.getWork_place())){
if ( model.getWork_place().length()>245){
- throw new YamiShopBindException("工作地址长度超过245");
+ throw new YamiShopBindException("Work address exceeds 245 characters");
}
}
if (StrUtil.isNotBlank(model.getHome_place())){
if ( model.getHome_place().length()>245){
- throw new YamiShopBindException("家庭地址长度超过245");
+ throw new YamiShopBindException("Home address exceeds 245 characters");
}
}
if (StrUtil.isNotBlank(model.getRelatives_relation())){
if ( model.getRelatives_relation().length()>32){
- throw new YamiShopBindException("亲属电话长度超过32");
+ throw new YamiShopBindException("Relative phone exceeds 32 characters");
}
}
if (StrUtil.isNotBlank(model.getRelatives_name())){
if ( model.getRelatives_name().length()>32){
- throw new YamiShopBindException("亲属名称长度超过32");
+ throw new YamiShopBindException("Relative name exceeds 32 characters");
}
}
if (StrUtil.isNotBlank(model.getRelatives_place())){
if ( model.getRelatives_place().length()>245){
- throw new YamiShopBindException("亲属地址长度超过245");
+ throw new YamiShopBindException("Relative address exceeds 245 characters");
}
}
if (StrUtil.isNotBlank(model.getRelatives_phone())){
if ( model.getRelatives_phone().length()>32){
- throw new YamiShopBindException("亲属电话长度超过32");
+ throw new YamiShopBindException("Relative phone exceeds 32 characters");
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
index bc94e2b..aff11d0 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIcoController.java
@@ -64,7 +64,7 @@
public Result<String> subscribe(@Valid UserSubscription model) {
String partyId = SecurityUtils.getUser().getUserId();
if (StringUtils.isEmpty(partyId)) {
- throw new YamiShopBindException("请重新登录");
+ throw new YamiShopBindException("Please log in again");
}
RLock rLock = redissonClient.getLock("subscribe" + partyId);
boolean lockAcquired = false;
@@ -73,7 +73,7 @@
lockAcquired = rLock.tryLock(5, TimeUnit.SECONDS);
if (!lockAcquired) {
log.warn("无法获取锁: subscribe{}", partyId);
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
model.setUserId(partyId);
return icoService.subscribe(model);
@@ -82,7 +82,7 @@
throw e; // 重新抛出自定义异常
} catch (Exception e) {
log.error("系统异常: {}", e.getMessage(), e);
- throw new YamiShopBindException("操作失败,请稍后再试");
+ throw new YamiShopBindException("Operation failed, please try again later");
} finally {
// 确保释放锁
if (lockAcquired && rLock.isHeldByCurrentThread()) {
@@ -97,7 +97,7 @@
QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (icoQuery, IcoQuery.class);
String partyId = SecurityUtils.getUser().getUserId();
if (StringUtils.isEmpty(partyId)) {
- throw new YamiShopBindException("请重新登录");
+ throw new YamiShopBindException("Please log in again");
}
queryWrapper.eq("u.user_id", partyId);
queryWrapper.orderByDesc("created_at");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
index a1ff910..066984c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
@@ -89,7 +89,7 @@
user= userService.findByUserName(mobileOrUserName);
}
if (user==null){
- throw new YamiShopBindException("账号或密码不正确");
+ throw new YamiShopBindException("Incorrect username or password");
}
// 半小时内密码输入错误十次,已限制登录30分钟
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java
index 938455d..3161e61 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java
@@ -72,7 +72,7 @@
bySymbol.transName();
}
if (bySymbol == null) {
- throw new YamiShopBindException(symbol + " 不存在");
+ throw new YamiShopBindException(symbol + " does not exist");
}
List<StocksDto> stocks = findRealTimeByBoard(symbol);
RelatedStocksDto relatedStocksDto = new RelatedStocksDto(symbol, stocks);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalController.java
index e45bc29..77b0786 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalController.java
@@ -70,7 +70,7 @@
queryWrapper.eq("symbol", symbol);
long count = itemUserOptionalService.count(queryWrapper);
if(count > 0 ){
- throw new YamiShopBindException("当前已经加入过自选");
+ throw new YamiShopBindException("Already added to favorites");
}
@@ -80,11 +80,11 @@
entity.setSymbol(symbol);
itemUserOptionalService.save(entity);
}else {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
} catch (Exception e) {
log.error("保存自选失败", e);
- throw new YamiShopBindException("保存自选失败:"+ e.getMessage());
+ throw new YamiShopBindException("Failed to save favorites: " + e.getMessage());
}finally {
if (lock) {
ThreadUtils.sleep(50);
@@ -110,11 +110,11 @@
queryWrapper.eq("symbol", symbol);
itemUserOptionalService.remove(queryWrapper);
}else {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
} catch (Exception e) {
log.error("删除失败", e);
- throw new YamiShopBindException("删除失败");
+ throw new YamiShopBindException("Delete failed");
} finally {
if (lock) {
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalListController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalListController.java
index 605c57f..2053763 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalListController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemUserOptionalListController.java
@@ -158,7 +158,7 @@
public Result<String> save(@Valid ItemUserOptionalListDTO itemUserOptionalListDTO) {
String partyId = SecurityUtils.getUser().getUserId();
if (itemUserOptionalListService.findOne(partyId, itemUserOptionalListDTO.getName()) != null) {
- return Result.failed("该自选组名称已经使用");
+ return Result.failed("Watchlist name already in use");
}
//新增或编辑表单保存
ItemUserOptionalList entity = itemUserOptionalListWrapper.toEntity(itemUserOptionalListDTO);
@@ -175,7 +175,7 @@
public Result<String> saveItem(String listId, String symbol) {
String partyId = SecurityUtils.getUser().getUserId();
if (itemUserOptionalItemService.findOne(partyId, listId, symbol) != null) {
- return Result.failed("已经添加过该分组了");
+ return Result.failed("Group already added");
}
ItemUserOptionalItem itemUserOptionalItem = new ItemUserOptionalItem();
itemUserOptionalItem.setListId(listId);
@@ -237,7 +237,7 @@
String partyId = SecurityUtils.getUser().getUserId();
ItemUserOptionalList one = itemUserOptionalListService.findOne(partyId, updateDTO.getName());
if (one != null && !one.getUuid().equalsIgnoreCase(updateDTO.getUuid())) {
- return Result.failed("该自选组名称已经使用");
+ return Result.failed("Watchlist name already in use");
}
//新增或编辑表单保存
ItemUserOptionalList entity = BeanUtil.copyProperties(updateDTO, ItemUserOptionalList.class);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiKycController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiKycController.java
index d019921..d8f9581 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiKycController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiKycController.java
@@ -125,10 +125,10 @@
// }
//
// if (model.getIdNumber().length()>50){
-// throw new YamiShopBindException("证件号码长度超过50");
+// throw new YamiShopBindException("ID number exceeds 50 characters");
// }
// if (model.getName().length()>50){
-// throw new YamiShopBindException("实名姓名长度超过50");
+// throw new YamiShopBindException("Real name exceeds 50 characters");
// }
// BeanUtils.copyProperties(model, realNameAuthRecord);
// realNameAuthRecord.setUserId(user.getUserId());
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewOnlineChatController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewOnlineChatController.java
index ad0d9b4..2a65de8 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewOnlineChatController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewOnlineChatController.java
@@ -117,7 +117,7 @@
String content = request.getParameter("content");
String type = request.getParameter("type");
if (StringUtils.isNullOrEmpty(content.trim()) || StringUtils.isNullOrEmpty(type)) {
- return Result.failed("发送消息为空");
+ return Result.failed("Message cannot be empty");
}
log.info("==========sendsendsendsend=======");
if(-1>=content.indexOf("%")) content = URLDecoder.decode(content, "utf-8");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
index cc75590..e5a33d2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
@@ -81,10 +81,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
Page<News> page = new Page<>(1, 1000000);
@@ -136,10 +136,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
List<News> list = new ArrayList<News>();
@@ -183,10 +183,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
List<News> list = new ArrayList<News>();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiOtcOnlineChatController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiOtcOnlineChatController.java
index 23ad854..6e6a001 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiOtcOnlineChatController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiOtcOnlineChatController.java
@@ -107,7 +107,7 @@
}
if(StringUtils.isEmptyString(orderNo)) {
- throw new YamiShopBindException("订单号不能未空");
+ throw new YamiShopBindException("Order number is required");
}
otcOnlineChatMessageService.saveSend(SecurityUtils.getCurrentUserId(), type, content, null, orderNo);
@@ -130,7 +130,7 @@
int unreadMsg = 0;
String orderNo = request.getParameter("orderNo");
if(StringUtils.isEmptyString(orderNo)) {
- throw new YamiShopBindException("订单号不能未空");
+ throw new YamiShopBindException("Order number is required");
}
unreadMsg = otcOnlineChatMessageService.unreadMsg(orderNo, SecurityUtils.getCurrentUserId());
resultObject.setData(unreadMsg);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethod2Controller.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethod2Controller.java
index cea29af..c15d052 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethod2Controller.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethod2Controller.java
@@ -115,7 +115,7 @@
String id = request.getParameter("id");
List<C2cOrder> order = c2cOrderService.getByPayId(id);
if (ObjectUtils.isNotEmpty(order)) {
- throw new YamiShopBindException("当前支付方式有未处理完成的订单!");
+ throw new YamiShopBindException("Pending orders exist for this payment method");
}
this.c2cPaymentMethodService.removeById(id);
return Result.succeed();
@@ -130,7 +130,7 @@
String language = request.getParameter("language");
C2cPaymentMethod method = this.c2cPaymentMethodService.getById(id);
if (null == method) {
- throw new BusinessException("支付方式不存在");
+ throw new BusinessException("Payment method does not exist");
}
if (StringUtils.isNotEmpty(method.getMethodImg())) {
method.setMethodImg(Constants.IMAGES_HTTP+method.getMethodImg());
@@ -167,24 +167,24 @@
String qrcode = request.getParameter("qrcode");
String remark = request.getParameter("remark");
if (StringUtils.isNullOrEmpty(method_config_id)) {
- throw new BusinessException("支付方式模板不正确");
+ throw new BusinessException("Invalid payment method template");
}
if (StringUtils.isNullOrEmpty(real_name)) {
- throw new BusinessException("真实姓名必填");
+ throw new BusinessException("Real name is required");
}
if (StringUtils.isNullOrEmpty(param_value1)) {
- throw new BusinessException("参数值1必填");
+ throw new BusinessException("Parameter value 1 is required");
}
C2cPaymentMethodConfig methodConfig = this.c2cPaymentMethodConfigService.getById(method_config_id);
if (null == methodConfig) {
- throw new BusinessException("支付方式模板不存在");
+ throw new BusinessException("Payment method template does not exist");
}
// C2C用户和承兑商添加支付方式最大数量
Map<String, C2cPaymentMethod> methodMap = this.c2cPaymentMethodService.getByPartyId(SecurityUtils.getCurrentUserId());
Object obj = this.sysparaService.find("c2c_payment_method_count_max");
if (null != obj) {
if (methodMap.size() >= Integer.valueOf(this.sysparaService.find("c2c_payment_method_count_max").getSvalue()).intValue()) {
- throw new BusinessException("支付方式数量已达上限");
+ throw new BusinessException("Payment method limit reached");
}
}
C2cPaymentMethod method = new C2cPaymentMethod();
@@ -286,18 +286,18 @@
String qrcode = request.getParameter("qrcode");
String remark = request.getParameter("remark");
if (StringUtils.isNullOrEmpty(real_name)) {
- throw new BusinessException("真实姓名必填");
+ throw new BusinessException("Real name is required");
}
if (StringUtils.isNullOrEmpty(param_value1)) {
- throw new BusinessException("参数值1必填");
+ throw new BusinessException("Parameter value 1 is required");
}
C2cPaymentMethod method = this.c2cPaymentMethodService.getById(id);
if (null == method) {
- throw new BusinessException("支付方式不存在");
+ throw new BusinessException("Payment method does not exist");
}
String partyId = SecurityUtils.getCurrentUserId();
if (!method.getPartyId().equals(partyId)) {
- throw new BusinessException("支付方式不匹配该用户");
+ throw new BusinessException("Payment method does not match this user");
}
String log = MessageFormat.format("ip:" + IPHelper.getIpAddr()
+ ",用户修改支付方式,id:{0},原用户PARTY_ID:{1},原支付方式模板:{2},原支付方式类型:{3},原支付方式名称:{4},原支付方式图片:{5},原真实姓名:{6},"
@@ -385,15 +385,15 @@
String id = request.getParameter("id");
String language = request.getParameter("language");
if (StringUtils.isEmptyString(id)) {
- throw new YamiShopBindException("广告id不正确");
+ throw new YamiShopBindException("Invalid advertisement ID");
}
C2cAdvert c2cAdvert = c2cAdvertService.getById(id);
if (null == c2cAdvert) {
- throw new YamiShopBindException("广告不存在");
+ throw new YamiShopBindException("Advertisement does not exist");
}
C2cUser c2cUser = this.c2cUserService.getById(c2cAdvert.getC2cUserId());
if (null == c2cUser) {
- throw new YamiShopBindException("承兑商不存在");
+ throw new YamiShopBindException("Merchant does not exist");
}
List<C2cPaymentMethod> list = new ArrayList<C2cPaymentMethod>();
Map<String, C2cPaymentMethod> map = this.c2cPaymentMethodService.getByPartyId(c2cUser.getC2cUserPartyId());
@@ -405,7 +405,7 @@
}
}
if (null == list || 0 == list.size()) {
- throw new YamiShopBindException("承兑商支付方式未配置");
+ throw new YamiShopBindException("Merchant payment method not configured");
}
String[] payTypes = c2cAdvert.getPayType().split(",");
List<C2cPaymentMethod> resList = new ArrayList<C2cPaymentMethod>();
@@ -419,7 +419,7 @@
}
}
if (null == resList || 0 == resList.size()) {
- throw new YamiShopBindException("承兑商广告支付方式未配置");
+ throw new YamiShopBindException("Merchant ad payment method not configured");
}
for (int i = 0; i < resList.size(); i++) {
C2cPaymentMethod method = resList.get(i);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethodController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethodController.java
index a706469..07651cc 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethodController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiPaymentMethodController.java
@@ -80,52 +80,52 @@
public Result<?> add(@Valid AddPaymentMethodModel model) {
String language = ServletUtil.getRequest().getParameter("language");
if (StringUtils.isNullOrEmpty(model.getMethod_config_id())) {
- throw new YamiShopBindException("支付方式模板不正确");
+ throw new YamiShopBindException("Invalid payment method template");
}
if (StringUtils.isNullOrEmpty(model.getReal_name())) {
- throw new YamiShopBindException("真实姓名必填");
+ throw new YamiShopBindException("Real name is required");
}
if (StringUtils.isNullOrEmpty(model.getParam_value1())) {
- throw new YamiShopBindException("参数值1必填");
+ throw new YamiShopBindException("Parameter value 1 is required");
}
if (model.getReal_name().length() > 20) {
if (language.equals("zh-CN")) {
- throw new YamiShopBindException("真实姓名长度大于20");
+ throw new YamiShopBindException("Real name exceeds 20 characters");
} else {
throw new YamiShopBindException("Real name length greater than 20");
}
}
if (model.getRemark().length() > 100) {
if (language.equals("zh-CN")) {
- throw new YamiShopBindException("备注长度大于100");
+ throw new YamiShopBindException("Remark exceeds 100 characters");
} else {
throw new YamiShopBindException("Note length greater than 100");
}
}
C2cPaymentMethodConfig methodConfig = c2cPaymentMethodConfigService.getById(model.getMethod_config_id());
if (null == methodConfig) {
- throw new YamiShopBindException("支付方式模板不存在");
+ throw new YamiShopBindException("Payment method template does not exist");
}
if (!StrUtil.isEmpty(model.getParam_value1())) {
if (model.getParam_value1().length() > 25) {
- throw new YamiShopBindException(methodConfig.getParamName1() + "长度大于25");
+ throw new YamiShopBindException(methodConfig.getParamName1() + " exceeds 25 characters");
}
}
if (!StrUtil.isEmpty(model.getParam_value2())) {
if (model.getParam_value2().length() > 25) {
- throw new YamiShopBindException(methodConfig.getParamName2() + "长度大于25");
+ throw new YamiShopBindException(methodConfig.getParamName2() + " exceeds 25 characters");
}
}
String partyId = SecurityUtils.getUser().getUserId();
if (null == partyId) {
- throw new YamiShopBindException("请重新登录");
+ throw new YamiShopBindException("Please log in again");
}
// C2C用户和承兑商添加支付方式最大数量
Map<String, C2cPaymentMethod> methodMap = c2cPaymentMethodService.getByPartyId(partyId);
Object obj = this.sysparaService.find("c2c_payment_method_count_max");
if (null != obj) {
if (methodMap.size() >= Integer.valueOf(this.sysparaService.find("c2c_payment_method_count_max").getSvalue()).intValue()) {
- throw new YamiShopBindException("支付方式数量已达上限");
+ throw new YamiShopBindException("Payment method limit reached");
}
}
C2cPaymentMethod method = new C2cPaymentMethod();
@@ -207,32 +207,32 @@
public Result<?> update(@Valid AddPaymentMethodModel model) {
String language = ServletUtil.getRequest().getParameter("language");
if (StringUtils.isNullOrEmpty(model.getReal_name())) {
- throw new YamiShopBindException("真实姓名必填");
+ throw new YamiShopBindException("Real name is required");
}
if (StringUtils.isNullOrEmpty(model.getParam_value1())) {
- throw new YamiShopBindException("参数值1必填");
+ throw new YamiShopBindException("Parameter value 1 is required");
}
if (model.getReal_name().length() > 20) {
if (language.equals("zh-CN")) {
- throw new YamiShopBindException("真实姓名长度大于20");
+ throw new YamiShopBindException("Real name exceeds 20 characters");
} else {
throw new YamiShopBindException("Real name length greater than 20");
}
}
if (model.getRemark().length() > 100) {
if (language.equals("zh-CN")) {
- throw new YamiShopBindException("备注长度大于100");
+ throw new YamiShopBindException("Remark exceeds 100 characters");
} else {
throw new YamiShopBindException("Note length greater than 100");
}
}
C2cPaymentMethod method = this.c2cPaymentMethodService.getById(model.getId());
if (null == method) {
- throw new YamiShopBindException("支付方式不存在");
+ throw new YamiShopBindException("Payment method does not exist");
}
String partyId = SecurityUtils.getUser().getUserId();
if (!method.getPartyId().equals(partyId)) {
- throw new YamiShopBindException("支付方式不匹配该用户");
+ throw new YamiShopBindException("Payment method does not match this user");
}
String log = MessageFormat.format("ip:" + IPHelper.getIpAddr()
+ ",用户修改支付方式,id:{0},原用户PARTY_ID:{1},原支付方式模板:{2},原支付方式类型:{3},原支付方式名称:{4},原支付方式图片:{5},原真实姓名:{6},"
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRealNameAuthContoller.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRealNameAuthContoller.java
index 87cde23..3de2fe0 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRealNameAuthContoller.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRealNameAuthContoller.java
@@ -61,13 +61,13 @@
if (realNameAuthRecord != null) {
switch (realNameAuthRecord.getStatus()) {
case 0:
- msg = "已经提交申请,请等待审核";
+ msg = "Application submitted, please wait for review";
break;
case 1:
- msg = "审核中";
+ msg = "Under review";
break;
case 2:
- msg = "审核已通过";
+ msg = "Already approved";
break;
case 3:
realNameAuthRecord.setStatus(1);
@@ -91,10 +91,10 @@
}
if (model.getIdNumber().length()>50){
- throw new YamiShopBindException("证件号码长度超过50");
+ throw new YamiShopBindException("ID number exceeds 50 characters");
}
if (model.getName().length()>50){
- throw new YamiShopBindException("实名姓名长度超过50");
+ throw new YamiShopBindException("Real name exceeds 50 characters");
}
BeanUtils.copyProperties(model, realNameAuthRecord);
realNameAuthRecord.setUserId(user.getUserId());
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
index f25d97d..c47be20 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
@@ -91,7 +91,7 @@
boolean recharge_must_need_qr = this.sysparaService.find("recharge_must_need_qr").getBoolean();
if (recharge_must_need_qr) {
if (StringUtils.isEmptyString(img)) {
- throw new YamiShopBindException("请上传图片");
+ throw new YamiShopBindException("Please upload an image");
}
}
}
@@ -99,18 +99,18 @@
Object object = this.sessionTokenService.cacheGet(session_token);
this.sessionTokenService.del(session_token);
if (null == object || !SecurityUtils.getUser().getUserId().equals((String) object)) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
User party = userService.getById(SecurityUtils.getUser().getUserId());
if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
// 充值申请中的订单是否只能唯一:1唯一,2不限制
double recharge_only_one = Double.valueOf(sysparaService.find("recharge_only_one").getSvalue());
// 用户未结束银行卡订单数量
Long nofinishOrderCount = this.c2cOrderService.getNofinishOrderCount(SecurityUtils.getUser().getUserId().toString());
if (null != nofinishOrderCount && 0 != nofinishOrderCount.longValue() && 1 == recharge_only_one) {
- throw new YamiShopBindException("提交失败,当前有未处理银行卡订单");
+ throw new YamiShopBindException("Submission failed, pending bank order exists");
}
if(!coin.equals("usdt")){
coin += "usdt";
@@ -169,10 +169,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
Page<Map> page = new Page<>(page_no_int, 10);
@@ -200,22 +200,22 @@
private String verif(String amount, String coin, String blockchain_name, String channel_address) {
if (StringUtils.isNullOrEmpty(amount)) {
- return "充值数量必填";
+ return "Recharge amount is required";
}
if (!StringUtils.isDouble(amount)) {
- return "充值数量输入错误,请输入浮点数";
+ return "Invalid recharge amount, please enter a number";
}
if (Double.valueOf(amount).doubleValue() <= 0) {
- return "充值数量不能小于等于0";
+ return "Recharge amount must be greater than 0";
}
if (StringUtils.isEmptyString(coin)) {
- return "请输入充值币种";
+ return "Please select recharge currency";
}
if (StringUtils.isEmptyString(blockchain_name)) {
return "Parameter Error";
}
if (StringUtils.isEmptyString(channel_address)) {
- return "请输入地址";
+ return "Address is required";
}
return null;
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadFileController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadFileController.java
index bb8b723..9cd5c9c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadFileController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadFileController.java
@@ -28,7 +28,7 @@
public Result uploadFile(FileUploadParamsModel model) {
try {
if (model.getFile().getSize() / 1000L > 4500) {
- throw new YamiShopBindException("图片大小不能超过4M");
+ throw new YamiShopBindException("Image size cannot exceed 4MB");
}
String path= awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
FileInfoVo fileInfoVo=new FileInfoVo();
@@ -38,7 +38,7 @@
}
catch (Exception e) {
e.printStackTrace();
- throw new YamiShopBindException("文件上传失败");
+ throw new YamiShopBindException("File upload failed");
}
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadImgController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadImgController.java
index dc63d61..061300b 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadImgController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUploadImgController.java
@@ -26,7 +26,7 @@
@RequestMapping(value = basePath + "!execute.action")
public Result<String> execute(MultipartFile file) {
if (file.getSize() / 1024L > 30720L) {
- return Result.failed("图片大小不能超过30M");
+ return Result.failed("Image size cannot exceed 30MB");
}
String path = awsS3OSSFileService.uploadFile("chat", file);
return Result.succeed(Constants.IMAGES_HTTP+path);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
index f7b00e6..b61ad75 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
@@ -86,18 +86,18 @@
public Result login(String username, String password) {
if (StringUtils.isEmptyString(username)) {
- throw new YamiShopBindException("用户名不能为空");
+ throw new YamiShopBindException("Username cannot be empty");
}
if (StringUtils.isEmptyString(password)) {
- throw new YamiShopBindException("登录密码不能为空");
+ throw new YamiShopBindException("The login password cannot be empty");
}
if (password.length() < 6 || password.length() > 12) {
- throw new YamiShopBindException("登录密码必须6-12位");
+ throw new YamiShopBindException("The login password must be 6 to 12 characters long.");
}
String ip = IPHelper.getIpAddr();
if (!IpUtil.isCorrectIpRegular(ip)) {
log.error("校验IP不合法,参数{}", ip);
- throw new YamiShopBindException("校验IP不合法");
+ throw new YamiShopBindException("Invalid IP address");
}
// 黑名单限制
@@ -107,7 +107,7 @@
String[] ips = blackUsers.split(",");
if(Arrays.asList(ips).contains(ip.trim())){
- throw new YamiShopBindException("当前用户在黑名单中");
+ throw new YamiShopBindException("The current user is on the blacklist.");
}
}
@@ -143,28 +143,28 @@
private String validateParam(String username, String verifcode, String password, String type) {
if (StringUtils.isEmptyString(username)) {
- return "用户名不能为空";
+ return "Username cannot be empty";
}
-// if (StringUtils.isEmptyString(verifcode)) {
-// return "验证码不能为空";
-// }
+// if (StringUtils.isEmptyString(verifcode)) {
+// return "Verification code cannot be empty";
+// }
if (StringUtils.isEmptyString(password)) {
- return "登录密码不能为空";
+ return "Login password cannot be empty";
}
int min = 6;
int max = 12;
if (!RegexUtil.length(password, min, max)) {
- return "登陆密码长度不符合设定";
+ return "Login password length does not meet the requirements";
}
-// if (!RegexUtil.isDigits(this.password)) {
-// // 只能输入数字
-// return "登陆密码不符合设定";
-// }
-// if (StringUtils.isEmptyString(this.usercode)) {
-// return "推荐码不能为空";
-// }
+// if (!RegexUtil.isDigits(this.password)) {
+// // Only digits allowed
+// return "Login password does not meet the requirements";
+// }
+// if (StringUtils.isEmptyString(this.usercode)) {
+// return "Referral code cannot be empty";
+// }
if (StringUtils.isEmptyString(type) || !Arrays.asList("1", "2").contains(type)) {
- return "类型不能为空";
+ return "Type cannot be empty";
}
return null;
}
@@ -180,10 +180,10 @@
throw new YamiShopBindException(error);
}
/*if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("资金密码不能为空");
+ throw new YamiShopBindException("Fund password is required");
}
if (safeword.length() != 6 || !Strings.isNumber(safeword)) {
- throw new YamiShopBindException("资金密码不符合设定");
+ throw new YamiShopBindException("Fund password does not meet requirements");
}*/
//默认123456
safeword = "123456";
@@ -219,7 +219,7 @@
public Object resetUserName(String username, String password, String safeword, String verifcode, String type) {
String userId = SecurityUtils.getUser().getUserId();
if (StringUtils.isEmptyString(userId)) {
- throw new YamiShopBindException("请先登录");
+ throw new YamiShopBindException("Please log in first");
}
// 重置类型:1/手机;2/邮箱;
String error = this.validateParam(username, verifcode, password, type);
@@ -227,7 +227,7 @@
throw new YamiShopBindException(error);
}
if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("资金密码不能为空");
+ throw new YamiShopBindException("Fund password is required");
}
userService.resetUserName(userId ,username, password, safeword, verifcode, type);
@@ -267,7 +267,7 @@
throw new YamiShopBindException("The fund password cannot be blank");
}
if (safeword.length() != 6 || !Strings.isNumber(safeword)) {
- throw new YamiShopBindException("资金密码不符合设定");
+ throw new YamiShopBindException("The fund password does not match the settings.");
}
userService.setSafeword(SecurityUtils.getUser().getUserId(), passwordEncoder.encode(model.getSafeword()));
return Result.succeed(null);
@@ -356,36 +356,36 @@
String verifcode_type = request.getParameter("verifcode_type");
String verifcode = request.getParameter("verifcode");
if (StringUtils.isEmptyString(username)) {
- throw new YamiShopBindException("用户名不能为空");
+ throw new YamiShopBindException("Username is required");
}
if (StringUtils.isEmptyString(password)) {
- throw new YamiShopBindException("密码不能为空");
+ throw new YamiShopBindException("Password is required");
}
if (password.length() < 6 || password.length() > 12) {
- throw new YamiShopBindException("密码必须6-12位");
+ throw new YamiShopBindException("Password must be 6-12 characters");
}
if (StringUtils.isEmptyString(verifcode_type)) {
- throw new YamiShopBindException("验证类型不能为空");
+ throw new YamiShopBindException("Verification type is required");
}
if (StringUtils.isEmptyString(verifcode)) {
- throw new YamiShopBindException("验证码不能为空");
+ throw new YamiShopBindException("Verification code is required");
}
User party = userService.findByUserName(username);
if (null == party) {
- throw new YamiShopBindException("用户名不存在");
+ throw new YamiShopBindException("Username does not exist");
}
// 根据验证类型获取验证key verifcode_type: 1/手机;2/邮箱;3/谷歌验证器;
String key = "";
String errMsg = "";
if ("1".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMobile()) || false == party.isUserMobileBind() ? "" : party.getUserMobile();
- errMsg = "未绑定手机号";
+ errMsg = "Phone number is not bound";
} else if ("2".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMail()) || false == party.isMailBind() ? "" : party.getUserMail();
- errMsg = "未绑定邮箱";
+ errMsg = "Email is not bound";
} else if ("3".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getGoogleAuthSecret()) || false == party.isGoogleAuthBind() ? "" : party.getGoogleAuthSecret();
- errMsg = "未绑定谷歌验证器";
+ errMsg = "Google Authenticator is not bound";
}
if (StringUtils.isEmptyString(key)) {
throw new YamiShopBindException(errMsg);
@@ -410,7 +410,7 @@
// 如果是演示用户,则不判断验证码
if (!"GUEST".contentEquals(party.getRoleName())) {
if (!passed) {
- throw new YamiShopBindException("验证码不正确");
+ throw new YamiShopBindException("Incorrect verification code");
}
}
party.setLoginPassword(passwordEncoder.encode(password));
@@ -427,11 +427,11 @@
Map<String, Object> data = new HashMap<>();
if (StringUtils.isEmptyString(username)) {
- throw new YamiShopBindException("用户名参数为空");
+ throw new YamiShopBindException("Username is required");
}
User party = userService.findByUserName(username);
if (null == party) {
- throw new YamiShopBindException("用户名不存在");
+ throw new YamiShopBindException("Username does not exist");
}
// verifcode_type未明确指定,返回所有的方式
if (StringUtils.isEmptyString(verifcode_type) || !Arrays.asList("1", "2", "3").contains(verifcode_type)) {
@@ -511,7 +511,7 @@
map.put("user_level_custom", (int) Math.floor(party.getUserLevel() / 10));
String projectType = this.sysparaService.find("project_type").getSvalue();
if (StringUtils.isEmptyString(projectType)) {
- throw new BusinessException("系统参数错误");
+ throw new BusinessException("System parameter error");
}
if (projectType.equals("DAPP_EXCHANGE_BINANCE")
|| projectType.equals("EXCHANGE_EASYCRYPTO")
@@ -607,16 +607,16 @@
String usercode) {
// if (StringUtils.isEmptyString(phone) || !Strings.isNumber(phone) || phone.length() > 15) {
if (StringUtils.isEmptyString(phone) || phone.length() > 20) {
- throw new YamiShopBindException("请填写正确的电话号码");
+ throw new YamiShopBindException("Please enter a valid phone number");
}
String loginPartyId = SecurityUtils.getUser().getUserId();
User party = userService.getById(loginPartyId);
if (null != party.getUserMobile() && party.getUserMobile().equals(phone) && true == party.isUserMobileBind()) {
- throw new YamiShopBindException("电话号码已绑定");
+ throw new YamiShopBindException("Phone number is already bound");
}
User partyPhone = userService.findPartyByVerifiedPhone(phone);
if (null != partyPhone && !partyPhone.getUserId().toString().equals(loginPartyId)) {
- throw new YamiShopBindException("电话号码已绑定其他用户");
+ throw new YamiShopBindException("Phone number is bound to another user");
}
String authcode = identifyingCodeTimeWindowService.getAuthCode(phone);
String bind_phone_email_ver = this.sysparaService.find("bind_phone_email_ver").getSvalue();
@@ -625,19 +625,19 @@
if (!"GUEST".contentEquals(party.getRoleName())) {
if ("1".contentEquals(bind_phone_email_ver)) {
if (StringUtils.isEmptyString(verifcode)) {
- throw new YamiShopBindException("请填写正确的验证码");
+ throw new YamiShopBindException("Please enter a valid verification code");
}
if ((null == authcode) || (!authcode.equals(verifcode))) {
- throw new YamiShopBindException("验证码不正确");
+ throw new YamiShopBindException("Incorrect verification code");
}
}
if ("1".contentEquals(bind_usercode)) {
if (StringUtils.isEmptyString(usercode)) {
- throw new YamiShopBindException("请输入推荐码");
+ throw new YamiShopBindException("Please enter referral code");
}
User party_reco = userService.findUserByUserCode(usercode);
if (null == party_reco || party_reco.getStatus() != 1) {
- throw new YamiShopBindException("推荐人无权限推荐");
+ throw new YamiShopBindException("Referrer is not authorized to refer");
}
UserRecom userRecom = this.userRecomService.findByPartyId(party.getUserId());
if (null == userRecom) {
@@ -672,16 +672,16 @@
public Result<?> save_email(String email, String verifcode) {
if (StringUtils.isEmptyString(email) || !Strings.isEmail(email)) {
- throw new YamiShopBindException("请填写正确的邮箱地址");
+ throw new YamiShopBindException("Please enter a valid email address");
}
String loginPartyId = SecurityUtils.getUser().getUserId();
User party = userService.getById(loginPartyId);
if (null != party.getUserMail() && party.getUserMail().equals(email) && true == party.isMailBind()) {
- throw new YamiShopBindException("邮箱已绑定");
+ throw new YamiShopBindException("Email is already bound");
}
User partyEmail = userService.findPartyByVerifiedEmail(email);
if (null != partyEmail && !partyEmail.getUserId().toString().equals(loginPartyId)) {
- throw new YamiShopBindException("邮箱已绑定其他用户");
+ throw new YamiShopBindException("Email is bound to another user");
}
String authcode = this.identifyingCodeTimeWindowService.getAuthCode(email);
String bind_phone_email_ver = sysparaService.find("bind_phone_email_ver").getSvalue();
@@ -689,10 +689,10 @@
if (!"GUEST".contentEquals(party.getRoleName())) {
if ("1".contentEquals(bind_phone_email_ver)) {
if (StringUtils.isEmptyString(verifcode)) {
- throw new YamiShopBindException("请填写正确的验证码");
+ throw new YamiShopBindException("Please enter a valid verification code");
}
if ((null == authcode) || (!authcode.equals(verifcode))) {
- throw new YamiShopBindException("验证码不正确");
+ throw new YamiShopBindException("Incorrect verification code");
}
}
}
@@ -720,16 +720,16 @@
String verifcode_type = request.getParameter("verifcode_type");
String verifcode = request.getParameter("verifcode");
if (StringUtils.isEmptyString(password)) {
- throw new BusinessException("密码不能为空");
+ throw new BusinessException("Password is required");
}
if (password.length() < 6 || password.length() > 12) {
- throw new BusinessException("密码必须6-12位");
+ throw new BusinessException("Password must be 6-12 characters");
}
if (StringUtils.isEmptyString(verifcode_type)) {
- throw new BusinessException("验证类型不能为空");
+ throw new BusinessException("Verification type is required");
}
if (StringUtils.isEmptyString(verifcode)) {
- throw new BusinessException("验证码不能为空");
+ throw new BusinessException("Verification code is required");
}
String loginPartyId = SecurityUtils.getCurrentUserId();
User party = userService.getById(loginPartyId);
@@ -738,13 +738,13 @@
String errMsg = "";
if ("1".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMobile()) || false == party.isUserMobileBind() ? "" : party.getUserMobile();
- errMsg = "未绑定手机号";
+ errMsg = "Phone number is not bound";
} else if ("2".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMail()) || false == party.isMailBind() ? "" : party.getUserMail();
- errMsg = "未绑定邮箱";
+ errMsg = "Email is not bound";
} else if ("3".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getGoogleAuthSecret()) || false == party.isGoogleAuthBind() ? "" : party.getGoogleAuthSecret();
- errMsg = "未绑定谷歌验证器";
+ errMsg = "Google Authenticator is not bound";
}
if (StringUtils.isEmptyString(key)) {
throw new BusinessException(errMsg);
@@ -769,7 +769,7 @@
// 如果是演示用户,则不判断验证码
if (!"GUEST".contentEquals(party.getRoleName())) {
if (!passed) {
- throw new BusinessException("验证码不正确");
+ throw new BusinessException("Incorrect verification code");
}
}
party.setLoginPassword(passwordEncoder.encode(password));
@@ -786,23 +786,23 @@
public Result updateOldAndNewPsw(String old_password, String password, String re_password) {
if (StringUtils.isEmptyString(old_password)) {
- throw new YamiShopBindException("旧密码不能为空");
+ throw new YamiShopBindException("Old password is required");
}
if (StringUtils.isEmptyString(password)) {
- throw new YamiShopBindException("新密码不能为空");
+ throw new YamiShopBindException("New password is required");
}
if (StringUtils.isEmptyString(re_password)) {
- throw new YamiShopBindException("新密码确认不能为空");
+ throw new YamiShopBindException("Password confirmation is required");
}
if (old_password.length() < 6 || old_password.length() > 12 || password.length() < 6 || password.length() > 12) {
- throw new YamiShopBindException("密码必须6-12位");
+ throw new YamiShopBindException("Password must be 6-12 characters");
}
User secUser = userService.getById(SecurityUtils.getUser().getUserId());
if (!passwordEncoder.matches(old_password, secUser.getLoginPassword())) {
- throw new YamiShopBindException("旧密码不正确!");
+ throw new YamiShopBindException("Incorrect old password");
}
if (!password.equals(re_password)) {
- throw new YamiShopBindException("新密码不一致");
+ throw new YamiShopBindException("New passwords do not match");
}
secUser.setLoginPassword(passwordEncoder.encode(re_password));
userService.updateById(secUser);
@@ -817,16 +817,16 @@
public Result setSafeword(String safeword, String verifcode_type, String verifcode) {
if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("资金密码不能为空");
+ throw new YamiShopBindException("Fund password is required");
}
if (safeword.length() != 6 || !Strings.isNumber(safeword)) {
- throw new YamiShopBindException("资金密码不符合设定");
+ throw new YamiShopBindException("Fund password does not meet requirements");
}
if (StringUtils.isEmptyString(verifcode_type)) {
- throw new YamiShopBindException("验证类型不能为空");
+ throw new YamiShopBindException("Verification type is required");
}
if (StringUtils.isEmptyString(verifcode)) {
- throw new YamiShopBindException("验证码不能为空");
+ throw new YamiShopBindException("Verification code is required");
}
String loginPartyId = SecurityUtils.getUser().getUserId();
User party = userService.getById(loginPartyId);
@@ -835,13 +835,13 @@
String errMsg = "";
if ("1".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMobile()) || false == party.isUserMobileBind() ? "" : party.getUserMobile();
- errMsg = "未绑定手机号";
+ errMsg = "Phone number is not bound";
} else if ("2".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getUserMail()) || false == party.isMailBind() ? "" : party.getUserMail();
- errMsg = "未绑定邮箱";
+ errMsg = "Email is not bound";
} else if ("3".equals(verifcode_type)) {
key = StringUtils.isEmptyString(party.getGoogleAuthSecret()) || false == party.isGoogleAuthBind() ? "" : party.getGoogleAuthSecret();
- errMsg = "未绑定谷歌验证器";
+ errMsg = "Google Authenticator is not bound";
}
if (StringUtils.isEmptyString(key)) {
throw new YamiShopBindException(errMsg);
@@ -866,7 +866,7 @@
// 如果是演示用户,则不判断验证码
if (!"GUEST".contentEquals(party.getRoleName())) {
if (!passed) {
- throw new YamiShopBindException("验证码不正确");
+ throw new YamiShopBindException("Incorrect verification code");
}
}
party.setSafePassword(passwordEncoder.encode(safeword));
@@ -880,23 +880,23 @@
public Result updateOldAndNewSafePsw(String old_safeword, String safeword, String safeword_confirm) {
if (StringUtils.isEmptyString(old_safeword)) {
- throw new YamiShopBindException("旧资金密码不能为空");
+ throw new YamiShopBindException("Old fund password is required");
}
if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("新资金密码不能为空");
+ throw new YamiShopBindException("New fund password is required");
}
if (StringUtils.isEmptyString(safeword_confirm)) {
- throw new YamiShopBindException("新资金密码确认不能为空");
+ throw new YamiShopBindException("Fund password confirmation is required");
}
if (old_safeword.length() < 6 || old_safeword.length() > 12 || safeword.length() < 6 || safeword.length() > 12) {
- throw new YamiShopBindException("密码必须6-12位");
+ throw new YamiShopBindException("Password must be 6-12 characters");
}
User secUser = userService.getById(SecurityUtils.getUser().getUserId());
if (!passwordEncoder.matches(old_safeword, secUser.getSafePassword())) {
- throw new YamiShopBindException("旧密码不正确!");
+ throw new YamiShopBindException("Incorrect old password");
}
if (!safeword.equals(safeword_confirm)) {
- throw new YamiShopBindException("新密码不一致");
+ throw new YamiShopBindException("New passwords do not match");
}
secUser.setSafePassword(passwordEncoder.encode(safeword_confirm));
userService.updateById(secUser);
@@ -914,18 +914,18 @@
String remark) {
if (StringUtils.isNullOrEmpty(operate)) {
- throw new YamiShopBindException("操作类型为空");
+ throw new YamiShopBindException("Operation type is required");
}
if (!StringUtils.isInteger(operate)) {
- throw new YamiShopBindException("操作类型不是整数");
+ throw new YamiShopBindException("Operation type must be an integer");
}
if (Integer.valueOf(operate).intValue() < 0) {
- throw new YamiShopBindException("操作类型不能小于0");
+ throw new YamiShopBindException("Operation type cannot be negative");
}
if(!StrUtil.isEmpty(remark)){
if (remark.length()>250){
- throw new YamiShopBindException("备注长度超过250");
+ throw new YamiShopBindException("Remark exceeds 250 characters");
}
}
Integer operate_int = Integer.valueOf(operate);
@@ -960,29 +960,29 @@
String code = request.getParameter("code");
String key = request.getParameter("key");
if (!LockFilter.add(username)) {
- return Result.failed("重复提交");
+ return Result.failed("Duplicate submission");
}
String error = validateParamUsername(username, password);
if (!StringUtils.isNullOrEmpty(error)) {
return Result.failed(error);
}
if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("资金密码不能为空");
+ throw new YamiShopBindException("Fund password is required");
}
if (safeword.length() != 6 || !Strings.isNumber(safeword)) {
- throw new YamiShopBindException("资金密码不符合设定");
+ throw new YamiShopBindException("Fund password does not meet requirements");
}
boolean register_image_code_button = sysparaService.find("register_image_code_button").getBoolean();
if (register_image_code_button) {
if (StringUtils.isEmptyString(code) || StringUtils.isEmptyString(key)) {
- throw new BusinessException("验证码不能为空");
+ throw new BusinessException("Verification code is required");
} else {
String codeText = redisTemplate.opsForValue().get(key).toString();
String decryptCode = ImageVerificationEndecrypt.decryptDES(code, key + "key");
if (!decryptCode.equalsIgnoreCase(codeText)) {
log.info("ip:{" + IPHelper.getIpAddr() + "},图片验证码不正确,paramcode:{" + decryptCode + "},truecode:{"
+ codeText + "}");
- throw new BusinessException("验证码错误");
+ throw new BusinessException("Incorrect verification code");
}
}
}
@@ -1071,22 +1071,22 @@
private String validateParamUsername(String username, String password) {
if (StringUtils.isNullOrEmpty(username)) {
- return "用户名不能为空";
+ return "Username is required";
}
if (StringUtils.isNullOrEmpty(password)) {
- return "登录密码不能为空";
+ return "Login password is required";
}
if (!RegexUtil.isUSername(username)) {
- return "用户名必须由数字和英文字母组成";
+ return "Username must contain letters and numbers";
}
int min = 6;
int max = 12;
int max_name = 24;
if (!RegexUtil.length(username, min, max_name)) {
- return "用户名不符合设定";
+ return "Username does not meet requirements";
}
if (!RegexUtil.length(password, min, max)) {
- return "登陆密码长度不符合设定";
+ return "Login password length does not meet requirements";
}
// if (!RegexUtil.isDigits(this.password)) {
// // 只能输入数字
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWalletController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWalletController.java
index 0f8822d..70bfa31 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWalletController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWalletController.java
@@ -411,11 +411,11 @@
public Result getPairs(@RequestParam String pairs, String symbolType) throws IOException {
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
if (StringUtils.isEmptyString(pairs) || !pairs.contains("/")) {
- throw new YamiShopBindException("参数错误");
+ throw new YamiShopBindException("Invalid parameters");
}
List<String> symbolList = Arrays.asList(pairs.split("/"));
if (null == symbolList || 2 != symbolList.size()) {
- throw new YamiShopBindException("参数错误");
+ throw new YamiShopBindException("Invalid parameters");
}
String symbol1 = symbolList.get(0).toLowerCase();
String symbol2 = symbolList.get(1).toLowerCase();
@@ -582,10 +582,10 @@
status_int = null;
} else {
if (!StringUtils.isInteger(status)) {
- throw new YamiShopBindException("状态不是整数");
+ throw new YamiShopBindException("Status must be an integer");
}
if (Integer.valueOf(status).intValue() < 0) {
- throw new YamiShopBindException("状态不能小于0");
+ throw new YamiShopBindException("Status cannot be negative");
}
status_int = Integer.valueOf(status);
}
@@ -593,10 +593,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
List<Map<String, Object>> data = this.walletLogService.pagedQueryRecords(page_no_int, 10, SecurityUtils.getUser().getUserId(), category, start_time, end_time, wallet_type, status_int).getRecords();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWithdrawController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWithdrawController.java
index d7f4690..ac5d4a2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWithdrawController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiWithdrawController.java
@@ -109,13 +109,13 @@
if ("true".equals(exchange_withdraw_need_safeword)) {
// 资金密码验证
if (StringUtils.isEmptyString(safeword)) {
- throw new YamiShopBindException("资金密码不能为空");
+ throw new YamiShopBindException("Fund password is required");
}
if (safeword.length() < 6 || safeword.length() > 12) {
- throw new YamiShopBindException("资金密码必须6-12位");
+ throw new YamiShopBindException("Fund password must be 6-12 characters");
}
if (!userService.checkLoginSafeword(SecurityUtils.getUser().getUserId(), safeword)) {
- throw new YamiShopBindException("资金密码错误");
+ throw new YamiShopBindException("Incorrect fund password");
}
}
this.sessionTokenService.del(session_token);
@@ -226,7 +226,7 @@
public Result get(@RequestParam String order_no) throws IOException {
Withdraw withdraw = this.withdrawService.findByOrderNo(order_no);
if (withdraw==null){
- throw new YamiShopBindException("订单不存在!");
+ throw new YamiShopBindException("Order does not exist");
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("order_no", withdraw.getOrderNo());
@@ -256,10 +256,10 @@
page_no = "1";
}
if (!StringUtils.isInteger(page_no)) {
- throw new YamiShopBindException("页码不是整数");
+ throw new YamiShopBindException("Page number must be an integer");
}
if (Integer.valueOf(page_no).intValue() <= 0) {
- throw new YamiShopBindException("页码不能小于等于0");
+ throw new YamiShopBindException("Page number must be greater than 0");
}
int page_no_int = Integer.valueOf(page_no).intValue();
List<Map<String, Object>> data = this.walletLogService.pagedQueryWithdraw(page_no_int, 10, SecurityUtils.getUser().getUserId(), "1").getRecords();
@@ -365,13 +365,13 @@
private String verif(String amount) {
if (StringUtils.isNullOrEmpty(amount)) {
- return "提币数量必填";
+ return "Withdrawal amount is required";
}
if (!StringUtils.isDouble(amount)) {
- return "提币数量输入错误,请输入浮点数";
+ return "Invalid withdrawal amount, please enter a number";
}
if (Double.valueOf(amount).doubleValue() <= 0) {
- return "提币数量不能小于等于0";
+ return "Withdrawal amount must be greater than 0";
}
return null;
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
index 07408a0..8dc97a8 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
@@ -88,7 +88,7 @@
return Result.succeed(this.build(data, line, symbol));
} catch (Exception e) {
logger.error("getKline error", e);
- throw new YamiShopBindException("k线图获取失败");
+ throw new YamiShopBindException("Failed to load chart data");
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/PromoteController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/PromoteController.java
index 92fbad0..28c0ce8 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/PromoteController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/PromoteController.java
@@ -47,7 +47,7 @@
String level_temp = request.getParameter("level");
if (StringUtils.isNullOrEmpty(level_temp)
|| !StringUtils.isInteger(level_temp) || Integer.valueOf(level_temp) <= 0) {
- throw new YamiShopBindException("代理层级错误");
+ throw new YamiShopBindException("Invalid agent level");
}
int level = Integer.valueOf(level_temp);
String page_no = request.getParameter("page_no");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
index c2a70a8..d5223e0 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
@@ -97,7 +97,7 @@
return Result.ok(data);
} catch (Exception e) {
log.error("c", e);
- throw new YamiShopBindException("生成实时数据失败");
+ throw new YamiShopBindException("Failed to generate market data");
}
}
@@ -131,7 +131,7 @@
return Result.ok(stockTradeList);
} catch (Exception e) {
log.error("生成实时数据失败", e);
- throw new YamiShopBindException("生成实时数据失败");
+ throw new YamiShopBindException("Failed to generate market data");
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
index f736af9..426b620 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
@@ -241,7 +241,7 @@
//}
}catch (Exception e){
log.error("获取充值地址错误:",e);
- return Result.failed("失败");
+ return Result.failed("Failed");
}
}
@@ -362,7 +362,7 @@
Response response = okHttpClient.newCall(requestParm).execute();
result = response.body().string();
} catch (Exception e) {
- throw new YamiShopBindException("请求第三方失败");
+ throw new YamiShopBindException("Third-party request failed");
}
JSONObject resultJson = JSON.parseObject(result);
Integer code = resultJson.getInteger("code");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
index 5ab0981..8227a56 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -189,13 +189,13 @@
String volume_temp = request.getParameter("volume");
if (StringUtils.isNullOrEmpty(volume_temp)
|| !StringUtils.isDouble(volume_temp) || Double.valueOf(volume_temp) <= 0) {
- throw new YamiShopBindException("请输入正确的货币数量");
+ throw new YamiShopBindException("Please enter a valid amount");
}
double volume = Double.valueOf(volume_temp);
String symbol = request.getParameter("symbol");
String symbol_to = request.getParameter("symbol_to");
if (symbol.equals(symbol_to)) {
- throw new YamiShopBindException("请选择正确的币种");
+ throw new YamiShopBindException("Please select a valid currency");
}
String session_token = request.getParameter("session_token");
String partyId = SecurityUtils.getUser().getUserId();
@@ -204,11 +204,11 @@
if ((object == null) || (!partyId.equals((String) object))) {
log.info("sessionToken{}", object);
System.out.println("sessionToken " + object);
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
User party = userService.getById(partyId);
if (!party.isEnabled()) {
- throw new YamiShopBindException("用户已禁用!");
+ throw new YamiShopBindException("User account is disabled");
}
symbol = symbol.toLowerCase();
symbol_to = symbol_to.toLowerCase();
@@ -302,7 +302,7 @@
if (realtime_list.size() > 0) {
realtime = realtime_list.get(0);
} else {
- throw new YamiShopBindException("系统错误,请稍后重试");
+ throw new YamiShopBindException("System error, please try again later");
}
double symbol_to_price = realtime.getClose().doubleValue();
// usdt除以的数量
@@ -323,7 +323,7 @@
if (realtime_list.size() > 0) {
realtime = realtime_list.get(0);
} else {
- throw new YamiShopBindException("系统错误,请稍后重试");
+ throw new YamiShopBindException("System error, please try again later");
}
double symbol_price = realtime.getClose().doubleValue();
// 对应usdt数量
@@ -345,7 +345,7 @@
realtime = realtime_list.get(0);
symbol_price = realtime.getClose().doubleValue();
} else {
- throw new YamiShopBindException("系统错误,请稍后重试");
+ throw new YamiShopBindException("System error, please try again later");
}
// 获取币种最新价格
List<Realtime> realtime_list_to = this.dataService.realtime(symbol_to);
@@ -354,7 +354,7 @@
realtime_to = realtime_list_to.get(0);
symbol_to_price = realtime_to.getClose().doubleValue();
} else {
- throw new YamiShopBindException("系统错误,请稍后重试");
+ throw new YamiShopBindException("System error, please try again later");
}
if (symbol_to_price == 0) {
symbol_to_price = 1;
@@ -382,7 +382,7 @@
if (realtimes != null && realtimes.size() > 0) {
close = realtimes.get(0).getClose().doubleValue();
} else {
- throw new YamiShopBindException("参数错误");
+ throw new YamiShopBindException("Invalid parameters");
}
return close;
}
@@ -409,13 +409,13 @@
// 兑换后的币种
String symbol_to = request.getParameter("symbol_to");
if (symbol.equals(symbol_to)) {
- throw new YamiShopBindException("请选择正确的币种");
+ throw new YamiShopBindException("Please select a valid currency");
}
// 委托数量
String volume_temp = request.getParameter("volume");
if (StringUtils.isNullOrEmpty(volume_temp)
|| !StringUtils.isDouble(volume_temp) || Double.valueOf(volume_temp) < 0) {
- throw new YamiShopBindException("请输入正确的兑换数量");
+ throw new YamiShopBindException("Please enter a valid exchange amount");
}
Map<String, Object> parities = parities(symbol, symbol_to, volume_temp);
return Result.succeed(parities);
@@ -542,16 +542,16 @@
if (StringUtils.isNullOrEmpty(volume)
|| !StringUtils.isDouble(volume)
|| Double.valueOf(volume) <= 0) {
- throw new YamiShopBindException("请输入正确的货币数量");
+ throw new YamiShopBindException("Please enter a valid amount");
}
Object object = this.sessionTokenService.cacheGet(session_token);
this.sessionTokenService.del(session_token);
if ((object == null) || (!partyId.equals((String) object))) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
User party = userService.getById(partyId);
if (!party.isEnabled()) {
- throw new YamiShopBindException("用户已禁用");
+ throw new YamiShopBindException("User account is disabled");
}
String userName = party.getUserName();
@@ -565,7 +565,7 @@
System.out.println("stopUserInternet = " + stopUserInternet);
if(Arrays.asList(stopUsers).contains(userName.trim())){
- throw new YamiShopBindException("无网络");
+ throw new YamiShopBindException("Network unavailable");
}
}
@@ -573,7 +573,7 @@
RealNameAuthRecord party_kyc = realNameAuthRecordService.getByUserId(partyId);
if (party_kyc != null) {
if (!(party_kyc.getStatus() == 2) && "true".equals(sysparaService.find("exchange_by_kyc").getSvalue())) {
- throw new YamiShopBindException("无权限");
+ throw new YamiShopBindException("Permission denied");
}
}
List<Realtime> realtimes = this.dataService.realtime(symbol);
@@ -581,7 +581,7 @@
if (realtimes != null) {
close = realtimes.get(0).getClose().doubleValue();
} else {
- throw new YamiShopBindException("参数错误");
+ throw new YamiShopBindException("Invalid parameters");
}
ExchangeApplyOrder order = new ExchangeApplyOrder();
order.setPartyId(partyId);
@@ -639,17 +639,17 @@
if (StringUtils.isNullOrEmpty(volume)
|| !StringUtils.isDouble(volume)
|| Double.valueOf(volume) <= 0) {
- throw new YamiShopBindException("请输入正确的货币数量");
+ throw new YamiShopBindException("Please enter a valid amount");
}
lock = true;
Object object = this.sessionTokenService.cacheGet(session_token);
this.sessionTokenService.del(session_token);
if ((object == null) || (!partyId.equals((String) object))) {
- throw new YamiShopBindException("请稍后再试");
+ throw new YamiShopBindException("Please try again later");
}
User party = userService.getById(partyId);
if (!party.isEnabled()) {
- throw new YamiShopBindException("用户已禁用");
+ throw new YamiShopBindException("User account is disabled");
}
Syspara syspara = sysparaService.find("stop_user_internet");
@@ -661,7 +661,7 @@
System.out.println("stopUserInternet = " + stopUserInternet);
if(Arrays.asList(stopUsers).contains(party.getUserName())){
- throw new YamiShopBindException("无网络");
+ throw new YamiShopBindException("Network unavailable");
}
}
@@ -670,7 +670,7 @@
if (realtimes != null) {
close = realtimes.get(0).getClose().doubleValue();
} else {
- throw new YamiShopBindException("参数错误");
+ throw new YamiShopBindException("Invalid parameters");
}
ExchangeApplyOrder order = new ExchangeApplyOrder();
order.setPartyId(partyId);
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/dto/CloseAction.java b/trading-order-admin/src/main/java/com/yami/trading/api/dto/CloseAction.java
index 8a865f2..8d1c4da 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/dto/CloseAction.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/dto/CloseAction.java
@@ -20,21 +20,21 @@
/**
* direction "buy":多 "sell":空
*/
- @Pattern(regexp="^(buy|sell)$",message = "请输入正确的方向")
+ @Pattern(regexp="^(buy|sell)$",message = "Please enter a valid direction")
private String direction;
/**
* amount 委托数量(张)
*/
- @NotNull(message = "委托数量(张)必填")
- @DecimalMin(value = "0.00000001", message = "委托数量(张)不能小于0")
+ @NotNull(message = "Order quantity (lots) is required")
+ @DecimalMin(value = "0.00000001", message = "Order quantity cannot be less than 0")
private BigDecimal amount;
/**
* price 交易价格
*/
- @NotNull(message = "交易价格必填")
- @DecimalMin(value = "0.00000001", message = "交易价格不能小于0")
+ @NotNull(message = "Price is required")
+ @DecimalMin(value = "0.00000001", message = "Price cannot be less than 0")
private BigDecimal price;
@@ -42,6 +42,6 @@
*price_type 订单报价类型:"limit":限价 "opponent":对手价(市价)
*/
@NotNull
- @Pattern(regexp="^(limit|opponent)$",message = "请输入订单报价类型")
+ @Pattern(regexp="^(limit|opponent)$",message = "Please enter a valid order price type")
private String price_type;
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/dto/FutureOpenAction.java b/trading-order-admin/src/main/java/com/yami/trading/api/dto/FutureOpenAction.java
index d36c7f4..dd2e700 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/dto/FutureOpenAction.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/dto/FutureOpenAction.java
@@ -20,18 +20,18 @@
/**
* direction "buy":多 "sell":空
*/
- @Pattern(regexp="^(buy|sell)$",message = "请输入正确的方向")
+ @Pattern(regexp="^(buy|sell)$",message = "Please enter a valid direction")
@ApiModelProperty("方向")
private String direction;
/**
* amount 委托数量(张)
*/
- @NotNull(message = "金额")
- @DecimalMin(value = "0.00000001", message = "金额小于0")
+ @NotNull(message = "Amount is required")
+ @DecimalMin(value = "0.00000001", message = "Amount cannot be less than 0")
@ApiModelProperty("金额")
private BigDecimal amount;
- @NotNull(message = "交割参数不能为空")
+ @NotNull(message = "Delivery parameter is required")
@ApiModelProperty("交割参数")
private String para_id;
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/dto/OpenAction.java b/trading-order-admin/src/main/java/com/yami/trading/api/dto/OpenAction.java
index f414977..9f03bb2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/dto/OpenAction.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/dto/OpenAction.java
@@ -27,13 +27,13 @@
/**
* direction "buy":多 "sell":空
*/
- @Pattern(regexp="^(buy|sell)$",message = "请输入正确的方向")
+ @Pattern(regexp="^(buy|sell)$",message = "Please enter a valid direction")
private String direction;
/**
* amount 委托数量(张)
*/
- @NotNull(message = "委托数量(张)必填")
- @DecimalMin(value = "0.00000001", message = "委托数量(张)不能小于0")
+ @NotNull(message = "Order quantity (lots) is required")
+ @DecimalMin(value = "0.00000001", message = "Order quantity cannot be less than 0")
private BigDecimal amount;
/**
* lever_rate 杠杆倍数
@@ -44,8 +44,8 @@
/**
* price 交易价格
*/
- @NotNull(message = "交易价格必填")
- @DecimalMin(value = "0.00000001", message = "交易价格不能小于0")
+ @NotNull(message = "Price is required")
+ @DecimalMin(value = "0.00000001", message = "Price cannot be less than 0")
private BigDecimal price;
/**
@@ -63,7 +63,7 @@
*/
@NotNull
@JsonProperty("price_type")
- @Pattern(regexp="^(limit|opponent)$",message = "请输入订单报价类型")
+ @Pattern(regexp="^(limit|opponent)$",message = "Please enter a valid order price type")
private String price_type;
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/filter/KickoutFilter.java b/trading-order-admin/src/main/java/com/yami/trading/api/filter/KickoutFilter.java
index 3c94a6e..a2823ca 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/filter/KickoutFilter.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/filter/KickoutFilter.java
@@ -73,7 +73,7 @@
userService.logout(SecurityUtils.getUser().getUserId());
// 删除该用户在该系统当前的token
tokenStore.deleteCurrentToken(token);
- throw new YamiShopBindException(403,"accessToken 已过期");
+ throw new YamiShopBindException(403,"Access token has expired");
}
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/model/SetSafewordModel.java b/trading-order-admin/src/main/java/com/yami/trading/api/model/SetSafewordModel.java
index fe4b9bc..8e5844d 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/model/SetSafewordModel.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/model/SetSafewordModel.java
@@ -12,8 +12,8 @@
public class SetSafewordModel {
- @Length(min = 1,message = "资金密码最小6位")
- @NotBlank(message = "资金密码不能为空")
+ @Length(min = 6, message = "Fund password must be at least 6 characters")
+ @NotBlank(message = "Fund password is required")
@ApiModelProperty("资金密码")
private String safeword;
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/model/UserLoginModel.java b/trading-order-admin/src/main/java/com/yami/trading/api/model/UserLoginModel.java
index 6562ac1..81b7faf 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/model/UserLoginModel.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/model/UserLoginModel.java
@@ -19,7 +19,7 @@
/**
* 密码
*/
- @NotBlank(message = "passWord不能为空")
+ @NotBlank(message = "Password is required")
@ApiModelProperty(value = "一般用作密码", required = true)
protected String passWord;
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/config/ApiResponseBodyAdvice.java b/trading-order-common/src/main/java/com/yami/trading/common/config/ApiResponseBodyAdvice.java
new file mode 100644
index 0000000..c8e6b29
--- /dev/null
+++ b/trading-order-common/src/main/java/com/yami/trading/common/config/ApiResponseBodyAdvice.java
@@ -0,0 +1,39 @@
+package com.yami.trading.common.config;
+
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.common.util.ApiMessageTranslator;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+/**
+ * Translates Chinese messages in API responses to English for the user client.
+ */
+@RestControllerAdvice
+public class ApiResponseBodyAdvice implements ResponseBodyAdvice<Object> {
+
+ @Override
+ public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
+ return true;
+ }
+
+ @Override
+ public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
+ Class<? extends HttpMessageConverter<?>> selectedConverterType,
+ ServerHttpRequest request, ServerHttpResponse response) {
+ if (!ApiMessageTranslator.isUserApiRequest(request.getURI().getPath())) {
+ return body;
+ }
+ if (body instanceof Result) {
+ Result<?> result = (Result<?>) body;
+ if (result.getMsg() != null && ApiMessageTranslator.containsChinese(result.getMsg())) {
+ result.setMsg(ApiMessageTranslator.toEnglish(result.getMsg()));
+ }
+ }
+ return body;
+ }
+}
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/config/DefaultExceptionHandlerConfig.java b/trading-order-common/src/main/java/com/yami/trading/common/config/DefaultExceptionHandlerConfig.java
index 19f15d4..37ac981 100644
--- a/trading-order-common/src/main/java/com/yami/trading/common/config/DefaultExceptionHandlerConfig.java
+++ b/trading-order-common/src/main/java/com/yami/trading/common/config/DefaultExceptionHandlerConfig.java
@@ -13,6 +13,7 @@
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.BusinessException;
import com.yami.trading.common.exception.YamiShopBindException;
+import com.yami.trading.common.util.ApiMessageTranslator;
import com.yami.trading.common.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
@@ -44,7 +45,7 @@
@ExceptionHandler(MethodArgumentNotValidException.class)
- public Result <String> exception(MethodArgumentNotValidException e) {
+ public Result <String> exception(MethodArgumentNotValidException e, HttpServletRequest req) {
BindingResult bindingResult = e.getBindingResult();
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<ErrorMsg> errorMsgs = new ArrayList<>();
@@ -56,7 +57,7 @@
errorMsg.setMessage(fieldError.getDefaultMessage());
errorMsgs.add(errorMsg);
});
- return Result.failed(errorMsgs.toString()); }
+ return Result.failed(translateForUserClient(req, errorMsgs.toString())); }
@ExceptionHandler(value = ConstraintViolationException.class)
@@ -89,7 +90,7 @@
log.error("{}", ex);
String message = ex.getMessage();
if(StringUtils.isNotEmpty(message)){
- return Result.failed(message);
+ return Result.failed(translateForUserClient(req, message));
}else{
return Result.failed(ex.toString());
}
@@ -98,13 +99,23 @@
@ExceptionHandler(YamiShopBindException.class)
- public Result unauthorizedExceptionHandler(YamiShopBindException e){
+ public Result unauthorizedExceptionHandler(YamiShopBindException e, HttpServletRequest req){
log.error("YamiException Message :{}",e.getMessage());
- return Result.of(null,e.getCode(),e.getMessage());
+ return Result.of(null,e.getCode(),translateForUserClient(req, e.getMessage()));
}
@ExceptionHandler(BusinessException.class)
- public Result businessExceptionHandler(BusinessException e){
+ public Result businessExceptionHandler(BusinessException e, HttpServletRequest req){
log.error("YamiException Message :{}",e.getMessage());
- return Result.failed(e.getMessage());
+ return Result.failed(translateForUserClient(req, e.getMessage()));
+ }
+
+ private static String translateForUserClient(HttpServletRequest req, String message) {
+ if (req == null || message == null) {
+ return message;
+ }
+ if (ApiMessageTranslator.isUserApiRequest(req.getRequestURI())) {
+ return ApiMessageTranslator.toEnglish(message);
+ }
+ return message;
}
}
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/util/ApiMessageTranslator.java b/trading-order-common/src/main/java/com/yami/trading/common/util/ApiMessageTranslator.java
new file mode 100644
index 0000000..c11691a
--- /dev/null
+++ b/trading-order-common/src/main/java/com/yami/trading/common/util/ApiMessageTranslator.java
@@ -0,0 +1,246 @@
+package com.yami.trading.common.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * Translates API error/success messages to English for the user client (H5).
+ * <p>User API controllers ({@code com.yami.trading.api}) should throw English messages directly.
+ * This translator only applies to {@code /api/} and {@code *.action} requests, mainly for
+ * shared service-layer exceptions; admin endpoints are not translated.
+ */
+public final class ApiMessageTranslator {
+
+ private static final Pattern CHINESE = Pattern.compile("[\u4e00-\u9fff]");
+
+ private static final Map<String, String> ZH_TO_EN = new HashMap<>();
+
+ static {
+ // Common
+ ZH_TO_EN.put("参数错误", "Invalid parameters");
+ ZH_TO_EN.put("参数错误!", "Invalid parameters");
+ ZH_TO_EN.put("系统错误,请稍后重试", "System error, please try again later");
+ ZH_TO_EN.put("请稍后再试", "Please try again later");
+ ZH_TO_EN.put("操作失败,请稍后再试", "Operation failed, please try again later");
+ ZH_TO_EN.put("无权限", "Permission denied");
+ ZH_TO_EN.put("无网络", "Network unavailable");
+ ZH_TO_EN.put("请先登录", "Please log in first");
+ ZH_TO_EN.put("请登录!", "Please log in");
+ ZH_TO_EN.put("请重新登录", "Please log in again");
+ ZH_TO_EN.put("用户已禁用", "User account is disabled");
+ ZH_TO_EN.put("用户已禁用!", "User account is disabled");
+
+ // Auth / user
+ ZH_TO_EN.put("校验IP不合法", "Invalid IP address");
+ ZH_TO_EN.put("账号或密码不正确", "Incorrect username or password");
+ ZH_TO_EN.put("用户名不能为空", "Username is required");
+ ZH_TO_EN.put("用户名不存在", "Username does not exist");
+ ZH_TO_EN.put("用户名参数为空", "Username is required");
+ ZH_TO_EN.put("用户名重复", "Username already exists");
+ ZH_TO_EN.put("用户名不合法!", "Invalid username");
+ ZH_TO_EN.put("密码不能为空", "Password is required");
+ ZH_TO_EN.put("密码必须6-12位", "Password must be 6-12 characters");
+ ZH_TO_EN.put("密码不正确", "Incorrect password");
+ ZH_TO_EN.put("密码不正确!", "Incorrect password");
+ ZH_TO_EN.put("旧密码不能为空", "Old password is required");
+ ZH_TO_EN.put("新密码不能为空", "New password is required");
+ ZH_TO_EN.put("新密码确认不能为空", "Password confirmation is required");
+ ZH_TO_EN.put("旧密码不正确!", "Incorrect old password");
+ ZH_TO_EN.put("新密码不一致", "New passwords do not match");
+ ZH_TO_EN.put("登录失败", "Login failed");
+ ZH_TO_EN.put("注册失败!", "Registration failed");
+ ZH_TO_EN.put("用户不存在", "User does not exist");
+ ZH_TO_EN.put("用户不存在!", "User does not exist");
+ ZH_TO_EN.put("账号不存在", "Account does not exist");
+ ZH_TO_EN.put("当前登录账号不存在!", "Current account does not exist");
+ ZH_TO_EN.put("账号已存在!", "Account already exists");
+
+ // Fund password / verification
+ ZH_TO_EN.put("资金密码不能为空", "Fund password is required");
+ ZH_TO_EN.put("资金密码不符合设定", "Fund password does not meet requirements");
+ ZH_TO_EN.put("资金密码必须6-12位", "Fund password must be 6-12 characters");
+ ZH_TO_EN.put("资金密码错误", "Incorrect fund password");
+ ZH_TO_EN.put("资金密码不正确!", "Incorrect fund password");
+ ZH_TO_EN.put("旧资金密码不能为空", "Old fund password is required");
+ ZH_TO_EN.put("新资金密码不能为空", "New fund password is required");
+ ZH_TO_EN.put("新资金密码确认不能为空", "Fund password confirmation is required");
+ ZH_TO_EN.put("验证类型不能为空", "Verification type is required");
+ ZH_TO_EN.put("验证码不能为空", "Verification code is required");
+ ZH_TO_EN.put("验证码不正确", "Incorrect verification code");
+ ZH_TO_EN.put("请填写正确的验证码", "Please enter a valid verification code");
+ ZH_TO_EN.put("谷歌验证码错误!", "Incorrect Google Authenticator code");
+ ZH_TO_EN.put("用户谷歌验证码未绑定!", "Google Authenticator is not bound");
+
+ // Phone / email
+ ZH_TO_EN.put("请填写正确的电话号码", "Please enter a valid phone number");
+ ZH_TO_EN.put("电话号码已绑定", "Phone number is already bound");
+ ZH_TO_EN.put("电话号码已绑定其他用户", "Phone number is bound to another user");
+ ZH_TO_EN.put("请输入正确的手机号码", "Please enter a valid phone number");
+ ZH_TO_EN.put("手机号格式不正常!", "Invalid phone number format");
+ ZH_TO_EN.put("手机号已存在!", "Phone number already exists");
+ ZH_TO_EN.put("请填写正确的邮箱地址", "Please enter a valid email address");
+ ZH_TO_EN.put("邮箱已绑定", "Email is already bound");
+ ZH_TO_EN.put("邮箱已绑定其他用户", "Email is bound to another user");
+ ZH_TO_EN.put("邮箱已存在!", "Email already exists");
+ ZH_TO_EN.put("邮箱已重复", "Email already exists");
+ ZH_TO_EN.put("请输入正确的邮箱地址", "Please enter a valid email address");
+
+ // Referral
+ ZH_TO_EN.put("请输入推荐码", "Please enter referral code");
+ ZH_TO_EN.put("请输入正确的推荐码", "Please enter a valid referral code");
+ ZH_TO_EN.put("推荐码不正确", "Incorrect referral code");
+ ZH_TO_EN.put("推荐人无权限推荐", "Referrer is not authorized to refer");
+
+ // Trading
+ ZH_TO_EN.put("不在交易时段", "Outside trading hours");
+ ZH_TO_EN.put("当前已经休市", "Market is closed");
+ ZH_TO_EN.put("未开放合约交易", "Contract trading is not available");
+ ZH_TO_EN.put("停牌禁止交易", "Trading suspended for this symbol");
+ ZH_TO_EN.put("余额不足", "Insufficient balance");
+ ZH_TO_EN.put("仓位不足", "Insufficient position");
+ ZH_TO_EN.put("可平仓合约数量不足", "Insufficient closable contract quantity");
+ ZH_TO_EN.put("杠杠倍数不存在", "Leverage multiplier does not exist");
+ ZH_TO_EN.put("当前币对不存在", "Trading pair does not exist");
+ ZH_TO_EN.put("您已存在订单", "You already have an open order");
+ ZH_TO_EN.put("订单不存在", "Order does not exist");
+ ZH_TO_EN.put("订单不存在!", "Order does not exist");
+ ZH_TO_EN.put("委托单不存在", "Order does not exist");
+ ZH_TO_EN.put("平仓失败", "Failed to close position");
+ ZH_TO_EN.put("一键平仓失败", "Failed to close all positions");
+ ZH_TO_EN.put("追加保证金异常", "Failed to add margin");
+ ZH_TO_EN.put("执行撤单异常", "Failed to cancel order");
+
+ // Futures / delivery
+ ZH_TO_EN.put("k线图获取失败", "Failed to load chart data");
+ ZH_TO_EN.put("生成实时数据失败", "Failed to generate market data");
+
+ // Exchange / wallet
+ ZH_TO_EN.put("请输入正确的货币数量", "Please enter a valid amount");
+ ZH_TO_EN.put("请输入正确的兑换数量", "Please enter a valid exchange amount");
+ ZH_TO_EN.put("请选择正确的币种", "Please select a valid currency");
+ ZH_TO_EN.put("操作钱包失败!", "Wallet operation failed");
+ ZH_TO_EN.put("操作钱包失败!", "Wallet operation failed");
+
+ // Withdraw / recharge
+ ZH_TO_EN.put("未基础认证", "Basic verification required");
+ ZH_TO_EN.put("未安全认证,无提现权限", "Security verification required for withdrawal");
+ ZH_TO_EN.put("请先通过高级认证", "Advanced verification required");
+ ZH_TO_EN.put("无提现权限", "Withdrawal not permitted");
+ ZH_TO_EN.put("提现不得大于限额", "Withdrawal amount exceeds limit");
+ ZH_TO_EN.put("用户资金账户不存在!", "User fund account does not exist");
+ ZH_TO_EN.put("订单已操作,请不要重复操作!", "Order already processed");
+ ZH_TO_EN.put("请上传图片", "Please upload an image");
+ ZH_TO_EN.put("提交失败,当前有未处理银行卡订单", "Submission failed, pending bank order exists");
+ ZH_TO_EN.put("请求第三方失败", "Third-party request failed");
+
+ // C2C
+ ZH_TO_EN.put("支付币种不正确", "Invalid payment currency");
+ ZH_TO_EN.put("提交失败,当前有未处理订单", "Submission failed, pending order exists");
+ ZH_TO_EN.put("用户未结束订单数量已达上限", "Too many open orders");
+ ZH_TO_EN.put("今日取消订单次数太多了,请明日再试", "Too many cancellations today, try again tomorrow");
+ ZH_TO_EN.put("广告不存在", "Advertisement does not exist");
+ ZH_TO_EN.put("支付方式不存在", "Payment method does not exist");
+ ZH_TO_EN.put("订单类型不正确", "Invalid order type");
+ ZH_TO_EN.put("支付金额不正确", "Invalid payment amount");
+ ZH_TO_EN.put("币种数量不正确", "Invalid currency amount");
+ ZH_TO_EN.put("承兑商不存在", "Merchant does not exist");
+ ZH_TO_EN.put("承兑商的用户信息不存在", "Merchant user info does not exist");
+ ZH_TO_EN.put("流水小于限额", "Transaction volume below minimum limit");
+ ZH_TO_EN.put("用户不能取消提现", "Withdrawal cannot be cancelled");
+ ZH_TO_EN.put("充值或提现不正确", "Invalid deposit or withdrawal type");
+ ZH_TO_EN.put("订单状态不正确", "Invalid order status");
+
+ // Appeal / chat
+ ZH_TO_EN.put("申诉订单号不正确", "Invalid appeal order number");
+ ZH_TO_EN.put("请输入申诉原因", "Please enter appeal reason");
+ ZH_TO_EN.put("请上传申诉凭证", "Please upload appeal evidence");
+ ZH_TO_EN.put("该订单已提交申诉", "Appeal already submitted for this order");
+ ZH_TO_EN.put("申诉不存在", "Appeal does not exist");
+ ZH_TO_EN.put("订单号不能未空", "Order number is required");
+ ZH_TO_EN.put("发送消息为空", "Message cannot be empty");
+
+ // KYC
+ ZH_TO_EN.put("实名认证未通过,无法进行高级认证", "Real-name verification required before advanced verification");
+ ZH_TO_EN.put("证件号码长度超过50", "ID number exceeds 50 characters");
+ ZH_TO_EN.put("实名姓名长度超过50", "Real name exceeds 50 characters");
+ ZH_TO_EN.put("工作地址长度超过245", "Work address exceeds 245 characters");
+ ZH_TO_EN.put("家庭地址长度超过245", "Home address exceeds 245 characters");
+
+ // Upload / pagination
+ ZH_TO_EN.put("图片大小不能超过4M", "Image size cannot exceed 4MB");
+ ZH_TO_EN.put("图片大小不能超过30M", "Image size cannot exceed 30MB");
+ ZH_TO_EN.put("文件上传失败", "File upload failed");
+ ZH_TO_EN.put("页码不是整数", "Page number must be an integer");
+ ZH_TO_EN.put("页码不能小于等于0", "Page number must be greater than 0");
+ ZH_TO_EN.put("状态不是整数", "Status must be an integer");
+ ZH_TO_EN.put("状态不能小于0", "Status cannot be negative");
+
+ // Misc API responses
+ ZH_TO_EN.put("重复提交", "Duplicate submission");
+ ZH_TO_EN.put("失败", "Failed");
+ ZH_TO_EN.put("删除自选币种成功", "Removed from favorites");
+ ZH_TO_EN.put("该自选组名称已经使用", "Watchlist name already in use");
+ ZH_TO_EN.put("已经添加过该分组了", "Group already added");
+ ZH_TO_EN.put("当前支付方式有未处理完成的订单!", "Pending orders exist for this payment method");
+ ZH_TO_EN.put("广告id不正确", "Invalid advertisement ID");
+ ZH_TO_EN.put("承兑商支付方式未配置", "Merchant payment method not configured");
+ ZH_TO_EN.put("承兑商广告支付方式未配置", "Merchant ad payment method not configured");
+
+ // Operation type / remark
+ ZH_TO_EN.put("操作类型为空", "Operation type is required");
+ ZH_TO_EN.put("操作类型不是整数", "Operation type must be an integer");
+ ZH_TO_EN.put("操作类型不能小于0", "Operation type cannot be negative");
+ ZH_TO_EN.put("备注长度超过250", "Remark exceeds 250 characters");
+ ZH_TO_EN.put("请填入有效数字", "Please enter a valid number");
+ ZH_TO_EN.put("修改后金额不能小于0", "Amount cannot be negative after adjustment");
+ ZH_TO_EN.put("请选择转移类型", "Please select transfer type");
+
+ // Bean validation (API DTOs)
+ ZH_TO_EN.put("请输入正确的方向", "Please enter a valid direction");
+ ZH_TO_EN.put("委托数量(张)必填", "Order quantity (lots) is required");
+ ZH_TO_EN.put("委托数量(张)不能小于0", "Order quantity cannot be less than 0");
+ ZH_TO_EN.put("交易价格必填", "Price is required");
+ ZH_TO_EN.put("交易价格不能小于0", "Price cannot be less than 0");
+ ZH_TO_EN.put("请输入订单报价类型", "Please enter a valid order price type");
+ ZH_TO_EN.put("金额", "Amount is required");
+ ZH_TO_EN.put("金额小于0", "Amount cannot be less than 0");
+ ZH_TO_EN.put("交割参数不能为空", "Delivery parameter is required");
+ ZH_TO_EN.put("资金密码最小6位", "Fund password must be at least 6 characters");
+ }
+
+ private ApiMessageTranslator() {
+ }
+
+ public static boolean isUserApiRequest(String requestUri) {
+ if (requestUri == null) {
+ return false;
+ }
+ return requestUri.contains("/api/") || requestUri.endsWith(".action");
+ }
+
+ public static boolean containsChinese(String text) {
+ return text != null && CHINESE.matcher(text).find();
+ }
+
+ public static String toEnglish(String message) {
+ if (message == null || message.isEmpty()) {
+ return message;
+ }
+ String trimmed = message.trim();
+ String mapped = ZH_TO_EN.get(trimmed);
+ if (mapped != null) {
+ return mapped;
+ }
+ if (trimmed.startsWith("最低下单金额:")) {
+ return "Minimum order amount: " + trimmed.substring("最低下单金额:".length());
+ }
+ if (trimmed.startsWith("最低下单金额:")) {
+ return "Minimum order amount: " + trimmed.substring("最低下单金额:".length());
+ }
+ if (containsChinese(trimmed)) {
+ return "Operation failed, please try again later";
+ }
+ return message;
+ }
+}
--
Gitblit v1.9.3