Эх сурвалжийг харах

Merge branch 'master' of http://124.220.229.80:9093/root/cif

linxk 1 долоо хоног өмнө
parent
commit
616b630bb3

+ 2 - 1
cif-service/src/main/java/com/txz/cif/core/RedisUtil.java

@@ -1,5 +1,6 @@
 package com.txz.cif.core;
 
+import com.txz.cif.configurer.LocalUtil;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.ZSetOperations;
 import org.springframework.stereotype.Component;
@@ -176,7 +177,7 @@ public class RedisUtil {
 	 */
 	public long incr(String key, long delta){
 		if(delta<0){
-			throw new RuntimeException("递增因子必须大于0");
+			throw new RuntimeException(LocalUtil.get("increment.factor.must.be.greater.than.0"));
 		}
 		return redisTemplate.opsForValue().increment(key, delta);
 	}

+ 40 - 37
cif-service/src/main/java/com/txz/cif/core/ResultCode.java

@@ -10,10 +10,10 @@ public enum ResultCode {
     /**
      * 系统错误
      */
-    SUCCESS("200", "成功"),//成功
-    FAIL("400", "失败"),//失败
-    UNAUTHORIZED("401", "未认证(签名错误)"),//未认证(签名错误)
-    NOT_FOUND("404", "接口不存在"),//接口不存在
+    SUCCESS("200", "成功"),// 成功
+    FAIL("400", "失败"),// 失败
+    UNAUTHORIZED("401", "未认证(签名错误)"),// 未认证(签名错误)
+    NOT_FOUND("404", "接口不存在"),// 接口不存在
     INTERNAL_SERVER_ERROR("500", "服务器内部错误"),
     PERMISSION_NOT_HAS("409", "没有操作权限"),
     BACKSTAGE_IS_ERROR("501", "网关异常"),
@@ -38,67 +38,70 @@ public enum ResultCode {
     APPCODE_IS_NULL("1005", "应用编号不能为空"),
     STATUS_IS_NULL("1013", "状态异常"),
     ACCOUNT_IS_NULL("1051", "账号不能为空"),
-    HOSPITAL_IS_NULL("1052", "医院不能为空" ),
-    SETTLEPLANID_IS_NULL("1053", "请选择结算方案" ),
-    ALIASES_IS_HAVE("1054", "科目别名已存在" ),
+    HOSPITAL_IS_NULL("1052", "医院不能为空"),
+    SETTLEPLANID_IS_NULL("1053", "请选择结算方案"),
+    ALIASES_IS_HAVE("1054", "科目别名已存在"),
     SUBJECTTYPE_IS_ERROR("1055", "科目类型异常"),
     SETTLE_HAVE_DATA("1056", "已有结算数据,请联系管理员"),
-    AMOUNT_IS_INSUFFICIENT("1057", "账户金额不足,请联系管理员" ),
+    AMOUNT_IS_INSUFFICIENT("1057", "账户金额不足,请联系管理员"),
     ALIASES_IS_ERROR("1058", "您输入的科目别名有误,请输入非重复别名,例:109"),
-    ENDTIME_ERROR("1059", "您输入的结束时间不能大于昨天" ),
-    STARTTIME_ERROR("1060", "您输入的开始时间早于系统建立之初" ),
-    UNBINDING_NOT_SLEF("1061", "无法解绑群主"  ),
-    USER_STATUS_IS_ERROR("1062", "用户状态异常,请联系管理员"  ),
-    PAY_TYPE_IS_ERROR("1063", "未知的支付类型,请联系管理员"  ),
-    SIGN_ERROR("1064", "签名错误,请联系管理员" ),
-    HOSPITAL_DEVICE_IS_NULL("1065", "医院插件未安装,请联系管理员" ),
-    APPID_IS_NULL("1066", "该设备未配置商户appid,请联系管理员" ),
-
-    UKEY_IS_NULL("2000", "Ukey未找到,请联系管理员"  ),
-    UKEY_IS_SOLD("2001", "Ukey已售出,请联系管理员" ),
-    USERID_IS_ERROR("1067", "用户id异常" ),
+    ENDTIME_ERROR("1059", "您输入的结束时间不能大于昨天"),
+    STARTTIME_ERROR("1060", "您输入的开始时间早于系统建立之初"),
+    UNBINDING_NOT_SLEF("1061", "无法解绑群主"),
+    USER_STATUS_IS_ERROR("1062", "用户状态异常,请联系管理员"),
+    PAY_TYPE_IS_ERROR("1063", "未知的支付类型,请联系管理员"),
+    SIGN_ERROR("1064", "签名错误,请联系管理员"),
+    HOSPITAL_DEVICE_IS_NULL("1065", "医院插件未安装,请联系管理员"),
+    APPID_IS_NULL("1066", "该设备未配置商户appid,请联系管理员"),
+    
+    UKEY_IS_NULL("2000", "Ukey未找到,请联系管理员"),
+    UKEY_IS_SOLD("2001", "Ukey已售出,请联系管理员"),
+    USERID_IS_ERROR("1067", "用户id异常"),
     LOGINACCOUNT_IS_NULL("1068", "登录账号不能为空"),
-    ORG_IS_NULL("1069", "组织机构未找到" ),
+    ORG_IS_NULL("1069", "组织机构未找到"),
     USER_IS_EXIST("7008", "用户已注册"), CODE_CHECK_FAIL("1070", "验证码校验失败"),
-    BANK_IS_NULL("1071", "提现银行不能为空" ), REVIEW_IS_NULL("1072", "审核内容为空"),
-    EFFECTIVE_BALANCE_IS_INSUFFICIENT("1073", "有效余额不足" ),
-
+    BANK_IS_NULL("1071", "提现银行不能为空"), REVIEW_IS_NULL("1072", "审核内容为空"),
+    EFFECTIVE_BALANCE_IS_INSUFFICIENT("1073", "有效余额不足"),
+    
     ADD_RECHARGE_RECORD_EXCEPTION("1074", "创建充值订单失败"),
-    CHANNEL_EXCEPTION("1075", "未支持的通道类型" ),
-    AMOUNT_IS_NULL("1076", "金额不能为空,或者为0" );
-
-    private final String code;   //状态码
+    CHANNEL_EXCEPTION("1075", "未支持的通道类型"),
+    AMOUNT_IS_NULL("1076", "金额不能为空,或者为0"),
+    AMOUNT_OUT_MAX("1076", "金额超限"),
+    ;
+    
+    private final String code;   // 状态码
     private final String message;
-
+    
     ResultCode(String code, String message) {
         this.code = code;
         this.message = message;
     }
-
+    
     public String code() {
         return code;
     }
-
+    
     public String message() {
         return message;
     }
-
+    
     public String getCode() {
         return code;
     }
-
+    
     public String getMessage() {
         String msg = LocalUtil.get(this.name());
-        if (StrUtil.isNotBlank(msg) ){
-           return msg;
+        if (StrUtil.isNotBlank(msg)) {
+            return msg;
         }
         return message;
     }
-
+    
     /**
      * 通过状态码获取ENUM的名字
      *
      * @param code
+     *
      * @return
      */
     public static ResultCode getEnumByStatusCode(String code) {
@@ -107,7 +110,7 @@ public enum ResultCode {
                 return p;
             }
         }
-
+        
         return null;
     }
 }

+ 1 - 0
cif-service/src/main/java/com/txz/cif/dubbo/client/OrderDubboServiceClient.java

@@ -1,6 +1,7 @@
 package com.txz.cif.dubbo.client;
 
 
+import com.txz.cif.core.ServiceException;
 import com.txz.mall.service.OrderDubboService;
 
 import lombok.extern.slf4j.Slf4j;

+ 12 - 11
cif-service/src/main/java/com/txz/cif/dubbo/impl/AccountDubboServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.core.ResultCode;
 import com.txz.cif.core.ResultGenerator;
 import com.txz.cif.core.ServiceException;
@@ -87,7 +88,7 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     public Result getWalletAccount(Long userId) {
         Account account = accountService.getAccount(userId, 1);
         if (account == null) {
-            return Result.genFailResult("没有找到");
+            return Result.genFailResult(LocalUtil.get("not.found"));
         }
         AccountDTO dto = BeanUtil.toBean(account, AccountDTO.class);
         return Result.genSuccessResult(dto);
@@ -96,13 +97,13 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Override
     public Result openGroup(OpenParam param) {
         if (param == null){
-            return Result.genFailResult("对象为空");
+            return Result.genFailResult(LocalUtil.get("object.is.empty"));
         }
         if (param.getUserId() == null){
-            return Result.genFailResult("userId为空");
+            return Result.genFailResult(LocalUtil.get("userid.is.empty"));
         }
         if (param.getAmount() == null){
-            return Result.genFailResult("Amount为空");
+            return Result.genFailResult(LocalUtil.get("amount.is.empty"));
         }
         // 支付
         // BizTypeEnum 类型 1001充值 2001提现  3001开团支付 3002参团支付  4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
@@ -120,13 +121,13 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Override
     public Result joinGroup(JoinParam param) {
         if (param == null){
-            return Result.genFailResult("对象为空");
+            return Result.genFailResult(LocalUtil.get("object.is.empty"));
         }
         if (param.getUserId() == null){
-            return Result.genFailResult("userId为空");
+            return Result.genFailResult(LocalUtil.get("userid.is.empty"));
         }
         if (param.getAmount() == null){
-            return Result.genFailResult("Amount为空");
+            return Result.genFailResult(LocalUtil.get("amount.is.empty"));
         }
         // 支付
         // 类型 1001充值 2001提现  3001开团支付 3002参团支付  4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
@@ -235,7 +236,7 @@ public class AccountDubboServiceImpl implements AccountDubboService {
         if (param.getBizType() == BizTypeEnum.SIGN_RED_ENVELOPE || param.getBizType() == BizTypeEnum.PROMOTION_COMMISSION) {
             p.setBizType(param.getBizType().getKey());
         } else {
-            return Result.genFailResult("不支持类型");
+            return Result.genFailResult(LocalUtil.get("unsupported.type"));
         }
         return redEnvelopeService.addRedEnvelope(p);
     }
@@ -244,13 +245,13 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Override
     public Result recharge(RechargeParam param) {
         if (param == null) {
-            return Result.genFailResult("参数为空");
+            return Result.genFailResult(LocalUtil.get("parameter.is.empty"));
         }
         if (param.getUserId() == null) {
-            return Result.genFailResult("参数账号id为空");
+            return Result.genFailResult(LocalUtil.get("parameter.account.id.is.empty"));
         }
         if (param.getAmount() == null) {
-            return Result.genFailResult("参数金额为空");
+            return Result.genFailResult(LocalUtil.get("parameter.amount.is.empty"));
         }
         
         param.setBizType(BizTypeEnum.RECHARGE.getKey());

+ 3 - 2
cif-service/src/main/java/com/txz/cif/dubbo/impl/UserDubboServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.google.common.base.Joiner;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.core.RedisUtil;
 import com.txz.cif.core.cache.CacheKey;
 import com.txz.cif.core.cache.CacheType;
@@ -49,10 +50,10 @@ public class UserDubboServiceImpl implements UserDubboService {
             if (user != null) {
                 return Result.genSuccessResult(BeanUtil.toBean(user, UserDTO.class));
             } else {
-                return Result.genFailResult("用户未找到");
+                return Result.genFailResult(LocalUtil.get("user.not.found"));
             }
         } else {
-            return Result.genFailResult("用户未登录");
+            return Result.genFailResult(LocalUtil.get("user.not.logged.in"));
         }
     }
     

+ 2 - 1
cif-service/src/main/java/com/txz/cif/open/impl/AliPayMchServiceImpl.java

@@ -3,6 +3,7 @@ package com.txz.cif.open.impl;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alipay.api.AlipayApiException;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.configurer.alipay.AliPayApiConfig;
 import com.txz.cif.configurer.alipay.AliPayApiConfigKit;
 import com.txz.cif.configurer.alipay.AliPayProperties;
@@ -61,7 +62,7 @@ public class AliPayMchServiceImpl implements AlipayMchService {
             }
         }
         if (apiConfig == null) {
-            throw new ServiceException("配置缺失:"+appId);
+            throw new ServiceException(LocalUtil.get("configuration.missing")+appId);
         }
 
         AliPayApiConfigKit.setThreadLocalAppId(apiConfig.getAppId());

+ 19 - 18
cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java

@@ -1,6 +1,7 @@
 package com.txz.cif.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.FlowMapper;
@@ -46,10 +47,10 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         try{
             Account account = accountService.getAccount(param.getUserId(),param.getAccountType());
             if (account == null){
-                return Result.genFailResult("账号未找到");
+                return Result.genFailResult(LocalUtil.get("account.not.found"));
             }
             if (account.getEffectiveBalance().subtract(param.getAmount()).compareTo(BigDecimal.ZERO) < 0){
-                return Result.genFailResult("冻结金额不足");
+                return Result.genFailResult(LocalUtil.get("insufficient.frozen.amount"));
             }
             Date today = DateUtil.date();
 
@@ -70,7 +71,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
             return Result.genSuccessResult(freezd.getId());
         }catch (Exception e){
             log.error("冻结异常",e);
-            return Result.genFailResult("冻结异常",e);
+            return Result.genFailResult(LocalUtil.get("freezing.exception"),e);
         }
 
     }
@@ -79,19 +80,19 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     public Result unFreeze(Long freezdId) {
         AccountFreezd freezd = accountFreezdService.findById(freezdId);
         if (freezd == null){
-            return Result.genFailResult("冻结记录未找到");
+            return Result.genFailResult(LocalUtil.get("frozen.record.not.found"));
         }
         if (freezd.getStatus() != 1){
-            return Result.genFailResult("冻结状态有异常");
+            return Result.genFailResult(LocalUtil.get("frozen.status.is.abnormal"));
         }
         Flow oldFlow = findById(freezd.getBizId());
         if (oldFlow == null){
-            return Result.genFailResult("冻结记录未找到");
+            return Result.genFailResult(LocalUtil.get("frozen.record.not.found"));
         }
 
         Account account = accountService.findById(freezd.getAccountId());
         if (account == null){
-            return Result.genFailResult("冻结账号未找到");
+            return Result.genFailResult(LocalUtil.get("frozen.account.not.found"));
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(freezd.getAmount()).bizType(BizTypeEnum.UNFREEZE.getKey())
@@ -146,11 +147,11 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     public Result recharge(RechargeParam param) {
         Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Account innerCapitalAccount = accountService.findById(MyConstants.INNER_MARKETING);
         if (innerCapitalAccount == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
@@ -177,7 +178,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
             //充值返点
             Account innerRebateAccount = accountService.findById(MyConstants.INNER_REBATE);
             if (innerCapitalAccount == null){
-                return Result.genFailResult("账号未找到");
+                return Result.genFailResult(LocalUtil.get("account.not.found"));
             }
             flow = Flow.builder().amount(param.getDiscount()).bizType(BizTypeEnum.REFUND_RECHARGE.getKey())
                     .userId(param.getUserId())
@@ -209,11 +210,11 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
 
         Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Account innerIncomeAccount = accountService.findById(MyConstants.INNER_INCOME);
         if (innerIncomeAccount == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
 
         //借:个人账户钱包(贷)     -500元
@@ -249,11 +250,11 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
 
         Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Account innerRefundAccount = accountService.findById(MyConstants.INNER_REFUND);
         if (innerRefundAccount == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
@@ -283,11 +284,11 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
 
         Account account = accountService.getAccount(param.getUserId(),param.getAccountType());
         if (account == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
         Account innerCapitalAccount = accountService.findById(MyConstants.INNER_CAPITAL);
         if (innerCapitalAccount == null){
-            return Result.genFailResult("账号未找到");
+            return Result.genFailResult(LocalUtil.get("account.not.found"));
         }
 
         Date today = DateUtil.date();
@@ -318,11 +319,11 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     public Result settle(RedEnvelope redEnvelope) {
         Account account = accountService.getAccount(redEnvelope.getUserId(), 2);
         if (account == null){
-            throw  new ServiceException("收益账户未找到");
+            throw  new ServiceException(LocalUtil.get("income.account.not.found"));
         }
         Account innerCapitalAccount = accountService.findById(MyConstants.INNER_RED);
         if (innerCapitalAccount == null){
-            throw  new ServiceException("账户未找到");
+            throw  new ServiceException(LocalUtil.get("account.not.found"));
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(redEnvelope.getAmount()).bizType(redEnvelope.getBizType())

+ 3 - 2
cif-service/src/main/java/com/txz/cif/service/impl/PaymentChannelServiceImpl.java

@@ -2,6 +2,7 @@ package com.txz.cif.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.MidChannelMethodMapper;
 import com.txz.cif.dao.PaymentChannelMapper;
@@ -96,7 +97,7 @@ public class PaymentChannelServiceImpl extends AbstractService<PaymentChannel> i
         criteria.andEqualTo("isValid",1);
         List<MidChannelMethod> midChannelMethodList = midChannelMethodService.findByCondition(condition);
         if(CollectionUtils.isEmpty(midChannelMethodList)){
-            throw new ServiceException("该支付方式没有合适的通道请换一种支付方式");
+            throw new ServiceException(LocalUtil.get("no.suitable.channel.for.this.payment.method.please.change.to.another.payment.method"));
         }
 
 
@@ -124,7 +125,7 @@ public class PaymentChannelServiceImpl extends AbstractService<PaymentChannel> i
         criteriaPaymentChannel.andEqualTo("isValid",1);
         List<PaymentChannel> byCondition = findByCondition(conditionPaymentChannel);
         if(CollectionUtils.isEmpty(byCondition)){
-            throw new ServiceException("通道不可用请换一种支付方式");
+            throw new ServiceException(LocalUtil.get("channel.unavailable.please.change.to.another.payment.method"));
         }
 
         return byCondition.get(0);

+ 5 - 7
cif-service/src/main/java/com/txz/cif/service/impl/UserServiceImpl.java

@@ -1,7 +1,6 @@
 package com.txz.cif.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -9,11 +8,13 @@ import cn.hutool.crypto.SecureUtil;
 import com.google.common.base.Joiner;
 import com.txz.cif.constants.RedisConstants;
 import com.txz.cif.core.*;
+import com.txz.cif.dao.UserMapper;
 import com.txz.cif.dto.UserDTO;
 import com.txz.cif.dubbo.client.OperatingConfigDubboServiceClient;
-import com.txz.cif.model.*;
-import com.txz.cif.dao.UserMapper;
-import com.txz.cif.service.*;
+import com.txz.cif.model.Account;
+import com.txz.cif.model.User;
+import com.txz.cif.service.AccountService;
+import com.txz.cif.service.UserService;
 import com.txz.cif.web.para.UserAddParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,12 +23,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
-import static java.util.regex.Pattern.compile;
-
 /**
  * Created by CodeGenerator on 2019/11/18.
  */

+ 5 - 4
cif-service/src/main/java/com/txz/cif/service/impl/WithdrawRecordServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.json.JSONUtil;
 import com.baomidou.lock.LockInfo;
 import com.baomidou.lock.LockTemplate;
 import com.baomidou.lock.executor.RedisTemplateLockExecutor;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.core.AbstractService;
 import com.txz.cif.core.ServiceException;
@@ -87,7 +88,7 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
         if (status == 2) {
             LockInfo lockInfo = lockTemplate.lock(String.format(MyConstants.TF_PAY_WITHDRAW_SUBMIT_LOCK, w.getOrderNo()), Long.valueOf(1000 * 60 * 2), Long.valueOf(1000 * 1), RedisTemplateLockExecutor.class);
             if (null == lockInfo) {
-                throw new ServiceException("提现审核失败");
+                throw new ServiceException(LocalUtil.get("withdrawal.review.failed"));
             }
             try {
                 User user = userService.findById(w.getUserId());
@@ -96,7 +97,7 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
                 
                 PaymentChannel paymentChannel = paymentChannelService.findById(channelId);
                 if (ObjectUtil.isEmpty(paymentChannel)) {
-                    throw new ServiceException("提现渠道不存在");
+                    throw new ServiceException(LocalUtil.get("withdrawal.channel.does.not.exist"));
                 }
                 switch (paymentChannel.getChannelName()) {
                     case "TFPAY":
@@ -137,7 +138,7 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
                             resultJson = JSONUtil.parseObj(bizLog.getReceiveMessage());
                         } catch (Exception e) {
                             log.error("提现失败三方返回-->" + bizLog);
-                            throw new ServiceException("提现失败");
+                            throw new ServiceException(LocalUtil.get("withdrawal.failed"));
                         }
                         if (!resultJson.getStr("status").equals("200")) {
                             log.error("提现失败--->" + resultJson.getStr("msg"));
@@ -145,7 +146,7 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
                         }
                         break;
                     default:
-                        throw new ServiceException("暂不支持此渠道");
+                        throw new ServiceException(LocalUtil.get("this.channel.is.not.supported.temporarily"));
                 }
                 this.update(WithdrawRecord.builder().id(w.getId()).channel(paymentChannel.getChannelName()).review(review).status(status).updateUser(userName).thirdOrderNo(thirdOrderNo).build());
             } finally {

+ 5 - 5
cif-service/src/main/java/com/txz/cif/web/RechargeRecordApiController.java

@@ -13,6 +13,7 @@ import com.baomidou.lock.LockTemplate;
 import com.baomidou.lock.executor.RedisTemplateLockExecutor;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.core.*;
 import com.txz.cif.dto.BizLogDTO;
@@ -94,9 +95,8 @@ public class RechargeRecordApiController {
     @ApiOperation(value = "充值商品", httpMethod = "GET")
     public Result<PaymentPriceVO> goodsList(@PathVariable("methodId") Long methodId) {
         Condition c = new Condition(Goods.class);
-        c.createCriteria().andEqualTo("status", 1);
-        c.createCriteria().andEqualTo("methodId", methodId);
-        c.setOrderByClause("amount asc");
+        c.createCriteria().andEqualTo("status", 1).andEqualTo("methodId", methodId);
+        c.setOrderByClause("sort_num asc");
         List<Goods> goods = goodsService.findByCondition(c);
         
         PaymentMethod paymentMethod = paymentMethodService.findById(methodId);
@@ -246,7 +246,7 @@ public class RechargeRecordApiController {
                     }
                     break;
                 default:
-                    throw new ServiceException(ResultCode.CHANNEL_EXCEPTION);
+                    throw new ServiceException(LocalUtil.get("this.channel.is.not.supported.temporarily"));
             }
             
             try {
@@ -265,7 +265,7 @@ public class RechargeRecordApiController {
             }
             
             if (!issuccess) {
-                throw new ServiceException(ResultCode.ADD_RECHARGE_RECORD_EXCEPTION);
+                throw new ServiceException(LocalUtil.get("failed.to.create.payment.order"));
             }
             
             return Result.success(CreatePayVO.builder().orderNo(orderNo).payUrl(payUrl).build());

+ 15 - 7
cif-service/src/main/java/com/txz/cif/web/WithdrawRecordApiController.java

@@ -3,6 +3,7 @@ package com.txz.cif.web;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.lock.LockInfo;
 import com.baomidou.lock.LockTemplate;
@@ -80,10 +81,11 @@ public class WithdrawRecordApiController {
     
     @Resource
     private OperatingConfigDubboServiceClient operatingConfigDubboServiceClient;
-
-
+    
+    
     @Resource
     private NoticeDubboServiceClient noticeDubboServiceClient;
+    
     @PostMapping("/add")
     @ApiOperation(value = "新增提现订单", httpMethod = "POST")
     public Result add(@RequestBody WithdrawParam param, @RequestHeader(value = X_CLIENT_TOKEN, required = false) String token) {
@@ -101,7 +103,7 @@ public class WithdrawRecordApiController {
             }
             Claims claims = result.getRight();
             Long userId = Long.valueOf(claims.get("userId").toString());
-
+            
             User user = userService.findById(userId);
             if (user == null) {
                 return ResultGenerator.genFailResult(ResultCode.USER_IS_NULL);
@@ -118,9 +120,15 @@ public class WithdrawRecordApiController {
                 user.setBankAccount(param.getBankAccount());
                 user.setBankAccountName(param.getBankAccountName());
             }
-            if (param.getAmount() == null || param.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
+            if (ObjectUtil.isEmpty(param.getAmount())) {
+                return ResultGenerator.genFailResult(ResultCode.AMOUNT_IS_NULL);
+            }
+            if (param.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
                 return ResultGenerator.genFailResult(ResultCode.AMOUNT_IS_NULL);
             }
+            if (param.getAmount().compareTo(new BigDecimal(20000)) > 0) {
+                return ResultGenerator.genFailResult(ResultCode.AMOUNT_OUT_MAX);
+            }
             
             com.txz.operating.result.Result<ConfigDTO> openRedEnvelopeRate = operatingConfigDubboServiceClient.getConfigByCode("join_red_envelope_rate");
             String rate = openRedEnvelopeRate.getData().getValueInfo();
@@ -282,7 +290,7 @@ public class WithdrawRecordApiController {
                 withdrawRecordService.success(record, DateUtil.parse(dto.getDatetime(), "yyyyMMddHHmmss"));
                 if (record.getAccountType() == 1) {
                     ne = NoticeEnum.MONEY_WITHDRAWAL_WALLET_SUCCESS;
-                } else  if (record.getAccountType() == 2) {
+                } else if (record.getAccountType() == 2) {
                     ne = NoticeEnum.MONEY_WITHDRAWAL_ACCOUNT_SUCCESS;
                 }
             } else {
@@ -306,8 +314,8 @@ public class WithdrawRecordApiController {
                 
             }
             try {
-                noticeDubboServiceClient.addMoneyNotice(ne,record.getUserId());
-            }catch (Exception e) {
+                noticeDubboServiceClient.addMoneyNotice(ne, record.getUserId());
+            } catch (Exception e) {
                 log.error("新增提现回调消息失败", e);
             }
             return "OK";

+ 19 - 20
cif-service/src/main/java/com/txz/cif/web/para/WithdrawParam.java

@@ -5,46 +5,45 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import javax.persistence.*;
+
 @Getter
 @Setter
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="提现入参")
+@ApiModel(value = "提现入参")
 public class WithdrawParam {
-
+    
     /**
      * 交易金额
      */
-    @ApiModelProperty(value="amount交易金额")
+    @ApiModelProperty(value = "amount交易金额")
     private BigDecimal amount;
-
-    @ApiModelProperty(value="账户类型 1钱包账户 2收益账户")
+    
+    @ApiModelProperty(value = "账户类型 1钱包账户 2收益账户")
     private Integer accountType;
-
+    
     /**
      * 渠道
      */
-    @ApiModelProperty(value="channel渠道")
+    @ApiModelProperty(value = "channel渠道")
     private String channel;
-
+    
     /**
      * 币种
      */
-    @ApiModelProperty(value="currency币种")
+    @ApiModelProperty(value = "currency币种")
     private String currency;
-
-
-    @ApiModelProperty(value="bank银行")
+    
+    
+    @ApiModelProperty(value = "bank银行")
     private String bank;
-    @ApiModelProperty(value="银行用户名称")
+    @ApiModelProperty(value = "银行用户名称")
     private String bankAccountName;
-
-
-    @ApiModelProperty(value="bankAccount银行账号")
+    
+    
+    @ApiModelProperty(value = "bankAccount银行账号")
     private String bankAccount;
-
-
+    
+    
 }

+ 96 - 0
cif-service/src/main/resources/static/i18n/messages_en.properties

@@ -31,3 +31,99 @@ WithdrawStatusEnum.CANCEL=Closed
 RedEnvelopeStatusEnum.PROCESSED=Processing
 RedEnvelopeStatusEnum.SUCCESS=Completed
 
+
+SUCCESS=success
+FAIL=failure
+UNAUTHORIZED=unauthenticated signature error
+NOT_FOUND=api does not exist
+INTERNAL_SERVER_ERROR=internal server error
+PERMISSION_NOT_HAS=no operation permission
+BACKSTAGE_IS_ERROR=gateway exception
+OAUTH_INVALID_ACCESS_TOKEN=login expired
+REDIS_KEY_IS_NOT_NULL=you are operating too fast please try again
+OBJECT_IS_NULL=object cannot be empty
+ID_IS_NULL=object id cannot be empty
+CODE_IS_NULL=code cannot be empty
+NAME_IS_NULL=name cannot be empty
+SEQ_IS_NULL=sort order cannot be empty
+USERID_IS_NULL=user id cannot be empty
+RESULT_IS_NULL=query result is empty
+TYPE_IS_NULL=type is empty
+SQL_ERROR=database exception
+OPERATOR_IS_NULL=operator information of this user not found
+OPERATOR_IS_ERROR=operator information of this user is incorrect
+USER_IS_NULL=user not found
+UNLOGIN_PWD_ERROR=incorrect password
+APPCODE_IS_NULL=application id cannot be empty
+STATUS_IS_NULL=status abnormal
+ACCOUNT_IS_NULL=account cannot be empty
+HOSPITAL_IS_NULL=please select a settlement plan
+SETTLEPLANID_IS_NULL=
+ALIASES_IS_HAVE=subject alias already exists
+SUBJECTTYPE_IS_ERROR=subject type abnormal
+SETTLE_HAVE_DATA=settlement data already exists please contact the administrator
+AMOUNT_IS_INSUFFICIENT=insufficient account balance please contact the administrator
+ALIASES_IS_ERROR=the subject alias you entered is incorrect please enter a non-duplicate alias e.g. 109
+ENDTIME_ERROR=the end time you entered cannot be later than yesterday
+STARTTIME_ERROR=the start time you entered is earlier than the system establishment time
+UNBINDING_NOT_SLEF=unable to unbind group owner
+USER_STATUS_IS_ERROR=user status is abnormal please contact the administrator
+PAY_TYPE_IS_ERROR=unknown payment type please contact the administrator
+SIGN_ERROR=signature error please contact the administrator
+HOSPITAL_DEVICE_IS_NULL=
+APPID_IS_NULL=
+
+UKEY_IS_NULL=
+UKEY_IS_SOLD=
+USERID_IS_ERROR=user id abnormal
+LOGINACCOUNT_IS_NULL=login account cannot be empty
+ORG_IS_NULL=organization not found
+USER_IS_EXIST=user already registered
+CODE_CHECK_FAIL=verification code verification failed
+BANK_IS_NULL=withdrawal bank cannot be empty
+REVIEW_IS_NULL=review content is empty
+EFFECTIVE_BALANCE_IS_INSUFFICIENT=insufficient available balance
+
+ADD_RECHARGE_RECORD_EXCEPTION=
+CHANNEL_EXCEPTION=
+AMOUNT_IS_NULL=
+AMOUNT_OUT_MAX=
+
+
+
+
+withdrawal.review.failed=withdrawal review failed
+withdrawal.channel.does.not.exist=withdrawal channel does not exist
+withdrawal.failed=withdrawal failed
+this.channel.is.not.supported.temporarily=this channel is not supported temporarily
+configuration.missing=configuration missing
+income.account.not.found=income account not found
+account.not.found=account not found
+no.suitable.channel.for.this.payment.method.please.change.to.another.payment.method=no suitable channel for this payment method please change to another payment method
+channel.unavailable.please.change.to.another.payment.method=channel unavailable please change to another payment method
+this.channel.is.not.supported.temporarily=this channel is not supported temporarily
+failed.to.create.payment.order=failed to create payment order
+not.found=not found
+object.is.empty=object is empty
+userid.is.empty=userid is empty
+amount.is.empty=amount is empty
+object.is.empty=object is empty
+unsupported.type=unsupported type
+parameter.is.empty=parameter is empty
+parameter.account.id.is.empty=parameter account id is empty
+parameter.amount.is.empty=parameter amount is empty
+user.not.found=user not found
+user.not.logged.in=user not logged in
+account.not.found=account not found
+insufficient.frozen.amount=insufficient frozen amount
+freezing.exception=freezing exception
+frozen.record.not.found=frozen record not found
+frozen.status.is.abnormal=frozen status is abnormal
+frozen.record.not.found=frozen record not found
+frozen.account.not.found=frozen account not found
+account.not.found=account not found
+account.not.found=account not found
+increment.factor.must.be.greater.than.0=increment factor must be greater than 0
+
+
+

+ 93 - 0
cif-service/src/main/resources/static/i18n/messages_en_US.properties

@@ -31,3 +31,96 @@ WithdrawStatusEnum.CANCEL=Closed
 RedEnvelopeStatusEnum.PROCESSED=Processing
 RedEnvelopeStatusEnum.SUCCESS=Completed
 
+
+SUCCESS=success
+FAIL=failure
+UNAUTHORIZED=unauthenticated signature error
+NOT_FOUND=api does not exist
+INTERNAL_SERVER_ERROR=internal server error
+PERMISSION_NOT_HAS=no operation permission
+BACKSTAGE_IS_ERROR=gateway exception
+OAUTH_INVALID_ACCESS_TOKEN=login expired
+REDIS_KEY_IS_NOT_NULL=you are operating too fast please try again
+OBJECT_IS_NULL=object cannot be empty
+ID_IS_NULL=object id cannot be empty
+CODE_IS_NULL=code cannot be empty
+NAME_IS_NULL=name cannot be empty
+SEQ_IS_NULL=sort order cannot be empty
+USERID_IS_NULL=user id cannot be empty
+RESULT_IS_NULL=query result is empty
+TYPE_IS_NULL=type is empty
+SQL_ERROR=database exception
+OPERATOR_IS_NULL=operator information of this user not found
+OPERATOR_IS_ERROR=operator information of this user is incorrect
+USER_IS_NULL=user not found
+UNLOGIN_PWD_ERROR=incorrect password
+APPCODE_IS_NULL=application id cannot be empty
+STATUS_IS_NULL=status abnormal
+ACCOUNT_IS_NULL=account cannot be empty
+HOSPITAL_IS_NULL=please select a settlement plan
+SETTLEPLANID_IS_NULL=
+ALIASES_IS_HAVE=subject alias already exists
+SUBJECTTYPE_IS_ERROR=subject type abnormal
+SETTLE_HAVE_DATA=settlement data already exists please contact the administrator
+AMOUNT_IS_INSUFFICIENT=insufficient account balance please contact the administrator
+ALIASES_IS_ERROR=the subject alias you entered is incorrect please enter a non-duplicate alias e.g. 109
+ENDTIME_ERROR=the end time you entered cannot be later than yesterday
+STARTTIME_ERROR=the start time you entered is earlier than the system establishment time
+UNBINDING_NOT_SLEF=unable to unbind group owner
+USER_STATUS_IS_ERROR=user status is abnormal please contact the administrator
+PAY_TYPE_IS_ERROR=unknown payment type please contact the administrator
+SIGN_ERROR=signature error please contact the administrator
+HOSPITAL_DEVICE_IS_NULL=
+APPID_IS_NULL=
+
+UKEY_IS_NULL=
+UKEY_IS_SOLD=
+USERID_IS_ERROR=user id abnormal
+LOGINACCOUNT_IS_NULL=login account cannot be empty
+ORG_IS_NULL=organization not found
+USER_IS_EXIST=user already registered
+CODE_CHECK_FAIL=verification code verification failed
+BANK_IS_NULL=withdrawal bank cannot be empty
+REVIEW_IS_NULL=review content is empty
+EFFECTIVE_BALANCE_IS_INSUFFICIENT=insufficient available balance
+
+
+
+
+
+
+withdrawal.review.failed=withdrawal review failed
+withdrawal.channel.does.not.exist=withdrawal channel does not exist
+withdrawal.failed=withdrawal failed
+this.channel.is.not.supported.temporarily=this channel is not supported temporarily
+configuration.missing=configuration missing
+income.account.not.found=income account not found
+account.not.found=account not found
+no.suitable.channel.for.this.payment.method.please.change.to.another.payment.method=no suitable channel for this payment method please change to another payment method
+channel.unavailable.please.change.to.another.payment.method=channel unavailable please change to another payment method
+this.channel.is.not.supported.temporarily=this channel is not supported temporarily
+failed.to.create.payment.order=failed to create payment order
+not.found=not found
+object.is.empty=object is empty
+userid.is.empty=userid is empty
+amount.is.empty=amount is empty
+object.is.empty=object is empty
+unsupported.type=unsupported type
+parameter.is.empty=parameter is empty
+parameter.account.id.is.empty=parameter account id is empty
+parameter.amount.is.empty=parameter amount is empty
+user.not.found=user not found
+user.not.logged.in=user not logged in
+account.not.found=account not found
+insufficient.frozen.amount=insufficient frozen amount
+freezing.exception=freezing exception
+frozen.record.not.found=frozen record not found
+frozen.status.is.abnormal=frozen status is abnormal
+frozen.record.not.found=frozen record not found
+frozen.account.not.found=frozen account not found
+account.not.found=account not found
+account.not.found=account not found
+increment.factor.must.be.greater.than.0=increment factor must be greater than 0
+
+
+

+ 100 - 0
cif-service/src/main/resources/static/i18n/messages_zh_CN.properties

@@ -31,3 +31,103 @@ WithdrawStatusEnum.CANCEL=\u53D6\u6D88
 RedEnvelopeStatusEnum.PROCESSED=\u5F85\u7ED3\u7B97
 RedEnvelopeStatusEnum.SUCCESS=\u5DF2\u7ED3\u7B97
 
+
+
+SUCCESS=\u6210\u529F
+FAIL=\u5931\u8D25
+UNAUTHORIZED=\u672A\u8BA4\u8BC1\uFF08\u7B7E\u540D\u9519\u8BEF\uFF09
+NOT_FOUND=\u63A5\u53E3\u4E0D\u5B58\u5728
+INTERNAL_SERVER_ERROR=\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF
+PERMISSION_NOT_HAS=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650
+BACKSTAGE_IS_ERROR=\u7F51\u5173\u5F02\u5E38
+OAUTH_INVALID_ACCESS_TOKEN=\u767B\u5F55\u5931\u6548
+REDIS_KEY_IS_NOT_NULL=\u60A8\u64CD\u4F5C\u7684\u592A\u5FEB\u4E86\uFF0C\u8BF7\u518D\u8BD5\u4E00\u6B21
+OBJECT_IS_NULL=\u5BF9\u8C61\u4E0D\u80FD\u4E3A\u7A7A
+ID_IS_NULL=\u5BF9\u8C61ID\u4E0D\u80FD\u4E3A\u7A7A
+CODE_IS_NULL=\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+NAME_IS_NULL=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
+SEQ_IS_NULL=\u6392\u5E8F\u4E0D\u80FD\u4E3A\u7A7A
+USERID_IS_NULL=\u7528\u6237id\u4E0D\u80FD\u4E3A\u7A7A
+RESULT_IS_NULL=\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A
+TYPE_IS_NULL=\u7C7B\u578B\u4E3A\u7A7A
+SQL_ERROR=\u6570\u636E\u5E93\u5F02\u5E38
+OPERATOR_IS_NULL=\u6CA1\u6709\u627E\u5230\u8BE5\u7528\u6237\u7684\u64CD\u4F5C\u5458\u4FE1\u606F
+OPERATOR_IS_ERROR=\u8BE5\u7528\u6237\u7684\u64CD\u4F5C\u5458\u4FE1\u606F\u6709\u8BEF
+USER_IS_NULL=\u672A\u627E\u5230\u7528\u6237
+UNLOGIN_PWD_ERROR=\u5BC6\u7801\u9519\u8BEF
+APPCODE_IS_NULL=\u5E94\u7528\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+STATUS_IS_NULL=\u72B6\u6001\u5F02\u5E38
+ACCOUNT_IS_NULL=\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+HOSPITAL_IS_NULL=\u533B\u9662\u4E0D\u80FD\u4E3A\u7A7A
+SETTLEPLANID_IS_NULL=\u8BF7\u9009\u62E9\u7ED3\u7B97\u65B9\u6848
+ALIASES_IS_HAVE=\u79D1\u76EE\u522B\u540D\u5DF2\u5B58\u5728
+SUBJECTTYPE_IS_ERROR=\u79D1\u76EE\u7C7B\u578B\u5F02\u5E38
+SETTLE_HAVE_DATA=\u5DF2\u6709\u7ED3\u7B97\u6570\u636E\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+AMOUNT_IS_INSUFFICIENT=\u8D26\u6237\u91D1\u989D\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+ALIASES_IS_ERROR=\u60A8\u8F93\u5165\u7684\u79D1\u76EE\u522B\u540D\u6709\u8BEF\uFF0C\u8BF7\u8F93\u5165\u975E\u91CD\u590D\u522B\u540D\uFF0C\u4F8B\uFF1A109
+ENDTIME_ERROR=\u60A8\u8F93\u5165\u7684\u7ED3\u675F\u65F6\u95F4\u4E0D\u80FD\u5927\u4E8E\u6628\u5929
+STARTTIME_ERROR=\u60A8\u8F93\u5165\u7684\u5F00\u59CB\u65F6\u95F4\u65E9\u4E8E\u7CFB\u7EDF\u5EFA\u7ACB\u4E4B\u521D
+UNBINDING_NOT_SLEF=\u65E0\u6CD5\u89E3\u7ED1\u7FA4\u4E3B
+USER_STATUS_IS_ERROR=\u7528\u6237\u72B6\u6001\u5F02\u5E38\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+PAY_TYPE_IS_ERROR=\u672A\u77E5\u7684\u652F\u4ED8\u7C7B\u578B\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+SIGN_ERROR=\u7B7E\u540D\u9519\u8BEF\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+HOSPITAL_DEVICE_IS_NULL=\u533B\u9662\u63D2\u4EF6\u672A\u5B89\u88C5\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+APPID_IS_NULL=\u8BE5\u8BBE\u5907\u672A\u914D\u7F6E\u5546\u6237appid\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+
+UKEY_IS_NULL=Ukey\u672A\u627E\u5230\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+UKEY_IS_SOLD=Ukey\u5DF2\u552E\u51FA\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+USERID_IS_ERROR=\u7528\u6237id\u5F02\u5E38
+LOGINACCOUNT_IS_NULL=\u767B\u5F55\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+ORG_IS_NULL=\u7EC4\u7EC7\u673A\u6784\u672A\u627E\u5230
+USER_IS_EXIST=\u7528\u6237\u5DF2\u6CE8\u518C
+CODE_CHECK_FAIL=\u9A8C\u8BC1\u7801\u6821\u9A8C\u5931\u8D25
+BANK_IS_NULL=\u63D0\u73B0\u94F6\u884C\u4E0D\u80FD\u4E3A\u7A7A
+REVIEW_IS_NULL=\u5BA1\u6838\u5185\u5BB9\u4E3A\u7A7A
+EFFECTIVE_BALANCE_IS_INSUFFICIENT=\u6709\u6548\u4F59\u989D\u4E0D\u8DB3
+
+ADD_RECHARGE_RECORD_EXCEPTION=\u521B\u5EFA\u5145\u503C\u8BA2\u5355\u5931\u8D25
+CHANNEL_EXCEPTION=\u672A\u652F\u6301\u7684\u901A\u9053\u7C7B\u578B
+AMOUNT_IS_NULL=\u91D1\u989D\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u6216\u8005\u4E3A0
+AMOUNT_OUT_MAX=\u91D1\u989D\u8D85\u9650
+
+
+
+
+withdrawal.review.failed=\u63D0\u73B0\u5BA1\u6838\u5931\u8D25
+withdrawal.channel.does.not.exist=\u63D0\u73B0\u6E20\u9053\u4E0D\u5B58\u5728
+withdrawal.failed=\u63D0\u73B0\u5931\u8D25
+this.channel.is.not.supported.temporarily=\u6682\u4E0D\u652F\u6301\u6B64\u6E20\u9053
+configuration.missing=\u914D\u7F6E\u7F3A\u5931:
+income.account.not.found=\u6536\u76CA\u8D26\u6237\u672A\u627E\u5230
+account.not.found=\u8D26\u6237\u672A\u627E\u5230
+no.suitable.channel.for.this.payment.method.please.change.to.another.payment.method=\u8BE5\u652F\u4ED8\u65B9\u5F0F\u6CA1\u6709\u5408\u9002\u7684\u901A\u9053\u8BF7\u6362\u4E00\u79CD\u652F\u4ED8\u65B9\u5F0F
+channel.unavailable.please.change.to.another.payment.method=\u901A\u9053\u4E0D\u53EF\u7528\u8BF7\u6362\u4E00\u79CD\u652F\u4ED8\u65B9\u5F0F
+this.channel.is.not.supported.temporarily=\u6682\u4E0D\u652F\u6301\u6B64\u6E20\u9053
+failed.to.create.payment.order=\u521B\u5EFA\u652F\u4ED8\u5355\u5931\u8D25
+not.found=\u6CA1\u6709\u627E\u5230
+object.is.empty=\u5BF9\u8C61\u4E3A\u7A7A
+userid.is.empty=userId\u4E3A\u7A7A
+amount.is.empty=Amount\u4E3A\u7A7A
+object.is.empty=\u5BF9\u8C61\u4E3A\u7A7A
+unsupported.type=\u4E0D\u652F\u6301\u7C7B\u578B
+parameter.is.empty=\u53C2\u6570\u4E3A\u7A7A
+parameter.account.id.is.empty=\u53C2\u6570\u8D26\u53F7id\u4E3A\u7A7A
+parameter.amount.is.empty=\u53C2\u6570\u91D1\u989D\u4E3A\u7A7A
+user.not.found=\u7528\u6237\u672A\u627E\u5230
+user.not.logged.in=\u7528\u6237\u672A\u767B\u5F55
+account.not.found=\u8D26\u53F7\u672A\u627E\u5230
+insufficient.frozen.amount=\u51BB\u7ED3\u91D1\u989D\u4E0D\u8DB3
+freezing.exception=\u51BB\u7ED3\u5F02\u5E38
+frozen.record.not.found=\u51BB\u7ED3\u8BB0\u5F55\u672A\u627E\u5230
+frozen.status.is.abnormal=\u51BB\u7ED3\u72B6\u6001\u6709\u5F02\u5E38
+frozen.record.not.found=\u51BB\u7ED3\u8BB0\u5F55\u672A\u627E\u5230
+frozen.account.not.found=\u51BB\u7ED3\u8D26\u53F7\u672A\u627E\u5230
+account.not.found=\u8D26\u53F7\u672A\u627E\u5230
+account.not.found=\u8D26\u53F7\u672A\u627E\u5230
+increment.factor.must.be.greater.than.0=\u9012\u589E\u56E0\u5B50\u5FC5\u987B\u5927\u4E8E0
+
+
+
+
+
+