Browse Source

注册登陆修改

30262728@qq.com 2 weeks ago
parent
commit
e373586967

+ 11 - 30
qnfhq-api/src/main/java/com/qnfhq/config/SaTokenConfigure.java

@@ -26,45 +26,28 @@ public class SaTokenConfigure {
      */
     @Bean
     public SaServletFilter getSaServletFilter() {
-        log.info("---------- Sa-Token 配置 in getSaServletFilter----------");
         return new SaServletFilter()
 
                 // 指定 拦截路由 与 放行路由
                 .addInclude("/**")
                 .addExclude(
-                        "/api/user/register",
-                        "/api/user/login",
-                        "/api/user/captcha",
-                        "/api/user/checkCaptcha",
-                        "/api/user/sendEmailCode",
-                        "/api/user/sendMobileCode",
-                        "/api/user/resetPwdPhone",
-                        "/api/user/resetPwdEmail",
-                        "/api/user/checkPhoneCode",
-                        "/api/user/checkEmailCode"
-
-//                        "/api/coin/list",
-//                        "/api/user/bindPhoneEmail",
-//                        "/api/timezone/getTimeZone",
-//                        "/ws/**",
-//                        "/api/recall/withdraw/unc",
-//                        "/api/recall/pay/unc",
-//                        "/api/advert/list",
-//                        "/api/helpcenter/**",
-//                        "/api/helpCenterInfo/**",
-//                        "/api/blockcc/ageeTrade",
-//                        "/api/ekyc/**", // 实名认证 - 认证返回函数
-//                        "/api/external/**"
+                        "/user/register",
+                        "/user/login",
+                        "/user/captcha",
+                        "/user/checkCaptcha",
+                        "/user/sendEmailCode",
+                        "/user/sendMobileCode",
+                        "/user/resetPwdPhone",
+                        "/user/resetPwdEmail",
+                        "/user/checkPhoneCode",
+                        "/user/checkEmailCode"
 
                 )
                 // 认证函数: 每次请求执行
                 .setAuth(obj -> {
-                    log.info("---------- 进入Sa-Token认证函数 ----------");
                     if (StpUtil.isLogin() == false) {
-                        log.info("---------- 进入Sa-Token认证函数 未登陆----------");
-                        SaRouter.back(new SaResult(ErrorCode.UNAUTHORIZED, "error", (Object) null));
+                        SaRouter.back(new SaResult(ErrorCode.UNAUTHORIZED, "Unauthorized Error", (Object) null));
                     } else {
-                        log.info("---------- 进入Sa-Token认证函数 已登陆----------");
                         long userId = StpUtil.getLoginIdAsLong();
                         redisUtils.get("active:UserId:" + userId,2*60*60);
                     }
@@ -73,8 +56,6 @@ public class SaTokenConfigure {
 
                 // 异常处理函数:每次认证函数发生异常时执行此函数
                 .setError(e -> {
-                    log.info("---------- 进入Sa-Token异常处理 ----------"+e.getMessage());
-                    // System.out.println("---------- 进入Sa-Token异常处理 -----------");
                     return SaResult.error(e.getMessage());
                 })
 

+ 6 - 6
qnfhq-api/src/main/java/com/qnfhq/modules/user/dto/AppLoginDTO.java

@@ -34,13 +34,13 @@ public class AppLoginDTO {
     @Schema(title = "区号")
     private String zone;
 
-    @Schema(title = "验证码")
-    @NotBlank(message="{NotBlank.code}")//验证码不能为空
-    private String code;
+//    @Schema(title = "图形验证码")
+    //@NotBlank(message="{NotBlank.code}")//验证码不能为空
+//    private String code;
 
-    @Schema(title = "唯一标识")
-    @NotBlank(message="{NotBlank.uuid}")//唯一标识不能为空
-    private String uuid;
+//    @Schema(title = "唯一标识")
+    //@NotBlank(message="{NotBlank.uuid}")//唯一标识不能为空
+//    private String uuid;
 
 //    @Schema(title = "登录类型")
 //    @NotNull(message="登录类型不能为空")

+ 0 - 1
qnfhq-api/src/main/java/com/qnfhq/modules/user/service/AppUserService.java

@@ -5,7 +5,6 @@ import com.qnfhq.common.utils.Result;
 import com.qnfhq.modules.user.dto.*;
 import com.qnfhq.modules.user.entity.AppUserEntity;
 import jakarta.servlet.http.HttpServletRequest;
-import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * 玩家用户表

+ 35 - 18
qnfhq-api/src/main/java/com/qnfhq/modules/user/service/impl/AppUserServiceImpl.java

@@ -13,7 +13,6 @@ import com.qnfhq.common.utils.DateUtils;
 import com.qnfhq.common.utils.IpUtils;
 import com.qnfhq.common.utils.MessageUtils;
 import com.qnfhq.common.utils.Result;
-import com.qnfhq.common.validator.ValidatorUtils;
 import com.qnfhq.constant.ApiConstant;
 import com.qnfhq.modules.user.dao.AppUserDao;
 import com.qnfhq.modules.user.dto.*;
@@ -95,11 +94,7 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
 
     @Override
     public AppUserEntity getUserByUserId(Long userId) {
-        return baseDao.selectOne(new LambdaQueryWrapper<AppUserEntity>()
-                .eq(AppUserEntity::getId, userId)
-                .eq(AppUserEntity::getStatus, UserStatus.OK.getCode())
-                .last(" limit 1")
-        );
+        return baseDao.selectById(userId);
     }
 
     @Override
@@ -140,7 +135,7 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
         EmailValidUtils.validateEmail(registerDto.getEmail());
         //密码强度检测
         PasswordStrengthValidator.validatePasswordStrength(registerDto.getLoginPassword());
-        log.info("password valid end");
+
 
         //验证码校验
         String codeType = registerDto.getCodeType();
@@ -234,10 +229,10 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
     @Override
     public Result login(AppLoginDTO dto, HttpServletRequest request)
     {
-        //图形验证码
-        if(!captchaService.validate(dto.getUuid(), dto.getCode())) {
-            throw new RenException(MessageUtils.message("appUser.login.code.err"));//验证码错误
-        }
+        //图形验证码 要改滑动码
+        //if(!captchaService.validate(dto.getUuid(), dto.getCode())) {
+        //    throw new RenException(MessageUtils.message("appUser.login.code.err"));//验证码错误
+        //}
 
         //账号密码失败重试次数
         checkPwdErrTryTimes(dto.getLoginName());
@@ -454,6 +449,8 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
         final String emailCodeResultKey = String.format("%s%s%s%s", CachePrefix.EMAIL_CODE.getPrefix(), UserCodeTypeEnum.valueOf(codeType).name(), email,":result");
         verifyResult(emailCodeResultKey);
 
+        //密码强度检测
+        PasswordStrengthValidator.validatePasswordStrength(newPwd);
         //更新密码
         AppUserEntity appUser = getUserByEmail(email);
         if(Objects.isNull(appUser)){
@@ -480,7 +477,8 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
         final String phoneCodeResultKey = String.format("%s%s%s%s%s",CachePrefix.SMS_CODE.getPrefix(),UserCodeTypeEnum.valueOf(codeType).name(),zone,phone,":result");
         verifyResult(phoneCodeResultKey);
 
-
+        //密码强度检测
+        PasswordStrengthValidator.validatePasswordStrength(newPwd);
         //更新密码
         AppUserEntity appUser = getUserByMobile(phone,zone);
         if(Objects.isNull(appUser)){
@@ -600,7 +598,18 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
     {
         //校验手机验证码
         final String phoneCodeKey = String.format("%s%s%s%s",CachePrefix.SMS_CODE.getPrefix(),UserCodeTypeEnum.valueOf(codeType).name(),zone,phone);
-        return checkCode(phoneCodeKey,code);
+        checkCode(phoneCodeKey,code);
+
+        AppUserEntity user = getUserByMobile(phone,zone);
+        if(Objects.isNull(user)) {
+            throw new RenException(MessageUtils.message("user.not.exist"));//用户不存在
+        }
+        Map data = MapUtil.of("phone",user.getPhone());
+        data.put("zone",user.getZone());
+        data.put("email",user.getEmail());
+        Result result = new Result();
+        result.setData(data);
+        return result;
     }
 
 
@@ -609,7 +618,18 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
     {
         //校验邮箱验证码
         final String emailCodeKey = String.format("%s%s%s", CachePrefix.EMAIL_CODE.getPrefix(), UserCodeTypeEnum.valueOf(codeType).name(), email);
-        return checkCode(emailCodeKey,code);
+        checkCode(emailCodeKey,code);
+
+        AppUserEntity user = getUserByEmail(email);
+        if(Objects.isNull(user)) {
+            throw new RenException(MessageUtils.message("user.not.exist"));//用户不存在
+        }
+        Map data = MapUtil.of("phone",user.getPhone());
+        data.put("zone",user.getZone());
+        data.put("email",user.getEmail());
+        Result result = new Result();
+        result.setData(data);
+        return result;
     }
 
     /**
@@ -618,7 +638,7 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
      * @param code
      * @return
      */
-    private Result checkCode(String cacheKey,String code) {
+    private void checkCode(String cacheKey,String code) {
         Object checkCode = redisUtils.get(cacheKey);
         if (checkCode == null) {
             throw new RenException(MessageUtils.message("user.register.code.err"));//验证码错误
@@ -635,8 +655,5 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserDao, AppUserEntit
         //设置验证结果
         final String checkCodeResult = String.format("%s%s",cacheKey,":result");
         redisUtils.set(checkCodeResult,1,ApiConstant.CHECK_EXPIRE);
-
-        Result result = new Result();
-        return result;
     }
 }

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=Kata laluan tidak boleh kosong  
+NotBlank.email=Emel tidak boleh kosong  
+NotBlank.codeType=Jenis kod pengesahan tidak boleh kosong  
+NotBlank.loginName=Nama akaun tidak boleh kosong  
+NotBlank.uuid=Pengenal unik tidak boleh kosong  
+NotBlank.phone=Nombor telefon tidak boleh kosong  
+NotBlank.zone=Kod kawasan tidak boleh kosong  
+NotBlank.code=Kod pengesahan tidak boleh kosong  
+Email.format.err=Format emel tidak betul  
+NotBlank.socialAccount=Akaun sosial tidak boleh kosong  
+NotBlank.socialType=Jenis akaun sosial tidak boleh kosong  
+NotNull.direction=Arah tidak boleh kosong  
+NotBlank.symbol=Mata wang perdagangan tidak boleh kosong  
+NotBlank.legalCoin=Mata wang sah tidak boleh kosong  
+NotNull.priceType=Jenis harga tidak boleh kosong  
+NotNull.price=Harga tidak boleh kosong  
+NotNull.num=Kuantiti tidak boleh kosong  
+NotNull.minAmount=Jumlah minimum tidak boleh kosong  
+NotNull.maxAmount=Jumlah maksimum tidak boleh kosong  
+NotBlank.payway=Cara pembayaran tidak boleh kosong  
+NotNull.adId=Nombor iklan tidak boleh kosong  
+NotNull.merchantId=Nombor peniaga tidak boleh kosong  
+NotNull.status=Status tidak boleh kosong  
+NotNull.payType=Cara pembayaran tidak boleh kosong  
+NotBlank.receiptInfo=Maklumat penerimaan tidak boleh kosong  
+NotNull.c2cAdId=Nombor iklan tidak boleh kosong  
+NotNull.tranAmount=Jumlah transaksi tidak boleh kosong  
+NotNull.tranBy=Cara transaksi tidak boleh kosong  
+NotNull.oId=Nombor pesanan tidak boleh kosong  
+NotBlank.img=Bukti pembayaran tidak boleh kosong  
+NotNull.id=Nombor tidak boleh kosong  
+NotBlank.orderNo=Nombor pesanan tidak boleh kosong  
+NotNull.flow=Status tidak boleh kosong  
+NotNull.orderId=Nombor pesanan tidak boleh kosong  
+NotBlank.reason=Alasan aduan tidak boleh kosong  
+NotBlank.remark=Penerangan bukti tidak boleh kosong  
+NotBlank.img1=Tangkapan skrin bukti 1 tidak boleh kosong  
+NotNull.complainId=Nombor aduan tidak boleh kosong  
+NotBlank.country=Negara tidak boleh kosong

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_de.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=Passwort darf nicht leer sein  
+NotBlank.email=E-Mail darf nicht leer sein  
+NotBlank.codeType=Verifizierungscode-Typ darf nicht leer sein  
+NotBlank.loginName=Benutzername darf nicht leer sein  
+NotBlank.uuid=Eindeutige Kennung darf nicht leer sein  
+NotBlank.phone=Telefonnummer darf nicht leer sein  
+NotBlank.zone=Vorwahl darf nicht leer sein  
+NotBlank.code=Verifizierungscode darf nicht leer sein  
+Email.format.err=E-Mail-Format ist nicht korrekt  
+NotBlank.socialAccount=Sozialkonto darf nicht leer sein  
+NotBlank.socialType=Sozialkonto-Typ darf nicht leer sein  
+NotNull.direction=Richtung darf nicht leer sein  
+NotBlank.symbol=Handelsw\u00e4hrung darf nicht leer sein  
+NotBlank.legalCoin=Fiat-W\u00e4hrung darf nicht leer sein  
+NotNull.priceType=Preistyp darf nicht leer sein  
+NotNull.price=Preis darf nicht leer sein  
+NotNull.num=Menge darf nicht leer sein  
+NotNull.minAmount=Mindestbetrag darf nicht leer sein  
+NotNull.maxAmount=H\u00f6chstbetrag darf nicht leer sein  
+NotBlank.payway=Zahlungsmethode darf nicht leer sein  
+NotNull.adId=Anzeige-ID darf nicht leer sein  
+NotNull.merchantId=H\u00e4ndler-ID darf nicht leer sein  
+NotNull.status=Status darf nicht leer sein  
+NotNull.payType=Zahlungsart darf nicht leer sein  
+NotBlank.receiptInfo=Empfangsinformationen d\u00fcrfen nicht leer sein  
+NotNull.c2cAdId=Anzeige-ID darf nicht leer sein  
+NotNull.tranAmount=Transaktionsbetrag darf nicht leer sein  
+NotNull.tranBy=Transaktionsart darf nicht leer sein  
+NotNull.oId=Bestellnummer darf nicht leer sein  
+NotBlank.img=Zahlungsnachweis darf nicht leer sein  
+NotNull.id=ID darf nicht leer sein  
+NotBlank.orderNo=Bestellnummer darf nicht leer sein  
+NotNull.flow=Status darf nicht leer sein  
+NotNull.orderId=Bestellnummer darf nicht leer sein  
+NotBlank.reason=Beschwerdegrund darf nicht leer sein  
+NotBlank.remark=Nachweisbeschreibung darf nicht leer sein  
+NotBlank.img1=Screenshot des Nachweises 1 darf nicht leer sein  
+NotNull.complainId=Beschwerde-ID darf nicht leer sein  
+NotBlank.country=Land darf nicht leer sein

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_en.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Password cannot be empty.
+NotBlank.password=Password cannot be empty
+NotBlank.email=Email cannot be empty
+NotBlank.codeType=Verification code type cannot be empty
+NotBlank.loginName=Account cannot be empty
+NotBlank.uuid=Unique identifier cannot be empty
+NotBlank.phone=Phone number cannot be empty
+NotBlank.zone=Area code cannot be empty
+NotBlank.code=Verification code cannot be empty
+Email.format.err=Email format is incorrect
+NotBlank.socialAccount=Social account cannot be empty
+NotBlank.socialType=Social account type cannot be empty
+NotNull.direction=Direction cannot be empty
+NotBlank.symbol=Trading currency cannot be empty
+NotBlank.legalCoin=Legal currency cannot be empty
+NotNull.priceType=Price type cannot be empty
+NotNull.price=Price cannot be empty
+NotNull.num=Quantity cannot be empty
+NotNull.minAmount=Minimum amount cannot be empty
+NotNull.maxAmount=Maximum amount cannot be empty
+NotBlank.payway=Payment method cannot be empty
+NotNull.adId=Advertisement ID cannot be empty
+NotNull.merchantId=Merchant ID cannot be empty
+NotNull.status=Status cannot be empty
+NotNull.payType=Payment method cannot be empty
+NotBlank.receiptInfo=Receipt information cannot be empty
+NotNull.c2cAdId=Advertisement ID cannot be empty
+NotNull.tranAmount=Transaction amount cannot be empty
+NotNull.tranBy=Transaction method cannot be empty
+NotNull.oId=Order ID cannot be empty
+NotBlank.img=Payment voucher cannot be empty
+NotNull.id=ID cannot be empty
+NotBlank.orderNo=Order number cannot be empty
+NotNull.flow=Status cannot be empty
+NotNull.orderId=Order ID cannot be empty
+NotBlank.reason=Appeal reason cannot be empty
+NotBlank.remark=Voucher description cannot be empty
+NotBlank.img1=Voucher screenshot 1 cannot be empty
+NotNull.complainId=Appeal ID cannot be empty
+NotBlank.country=Country cannot be empty

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_es.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=La contrase\u00f1a no puede estar vac\u00eda  
+NotBlank.email=El correo electr\u00f3nico no puede estar vac\u00edo  
+NotBlank.codeType=El tipo de c\u00f3digo de verificaci\u00f3n no puede estar vac\u00edo  
+NotBlank.loginName=El nombre de usuario no puede estar vac\u00edo  
+NotBlank.uuid=El identificador \u00fanico no puede estar vac\u00edo  
+NotBlank.phone=El n\u00famero de tel\u00e9fono no puede estar vac\u00edo  
+NotBlank.zone=El c\u00f3digo de \u00e1rea no puede estar vac\u00edo  
+NotBlank.code=El c\u00f3digo de verificaci\u00f3n no puede estar vac\u00edo  
+Email.format.err=El formato del correo electr\u00f3nico no es correcto  
+NotBlank.socialAccount=La cuenta social no puede estar vac\u00eda  
+NotBlank.socialType=El tipo de cuenta social no puede estar vac\u00edo  
+NotNull.direction=La direcci\u00f3n no puede estar vac\u00eda  
+NotBlank.symbol=La moneda de transacci\u00f3n no puede estar vac\u00eda  
+NotBlank.legalCoin=La moneda legal no puede estar vac\u00eda  
+NotNull.priceType=El tipo de precio no puede estar vac\u00edo  
+NotNull.price=El precio no puede estar vac\u00edo  
+NotNull.num=La cantidad no puede estar vac\u00eda  
+NotNull.minAmount=La cantidad m\u00ednima no puede estar vac\u00eda  
+NotNull.maxAmount=La cantidad m\u00e1xima no puede estar vac\u00eda  
+NotBlank.payway=El m\u00e9todo de pago no puede estar vac\u00edo  
+NotNull.adId=El n\u00famero de anuncio no puede estar vac\u00edo  
+NotNull.merchantId=El n\u00famero de comerciante no puede estar vac\u00edo  
+NotNull.status=El estado no puede estar vac\u00edo  
+NotNull.payType=El tipo de pago no puede estar vac\u00edo  
+NotBlank.receiptInfo=La informaci\u00f3n de recibo no puede estar vac\u00eda  
+NotNull.c2cAdId=El n\u00famero de anuncio no puede estar vac\u00edo  
+NotNull.tranAmount=El monto de la transacci\u00f3n no puede estar vac\u00edo  
+NotNull.tranBy=El m\u00e9todo de transacci\u00f3n no puede estar vac\u00edo  
+NotNull.oId=El n\u00famero de orden no puede estar vac\u00edo  
+NotBlank.img=El comprobante de pago no puede estar vac\u00edo  
+NotNull.id=El n\u00famero no puede estar vac\u00edo  
+NotBlank.orderNo=El n\u00famero de orden no puede estar vac\u00edo  
+NotNull.flow=El estado no puede estar vac\u00edo  
+NotNull.orderId=El n\u00famero de orden no puede estar vac\u00edo  
+NotBlank.reason=La raz\u00f3n de la apelaci\u00f3n no puede estar vac\u00eda  
+NotBlank.remark=La descripci\u00f3n del comprobante no puede estar vac\u00eda  
+NotBlank.img1=La captura del comprobante 1 no puede estar vac\u00eda  
+NotNull.complainId=El n\u00famero de apelaci\u00f3n no puede estar vac\u00edo  
+NotBlank.country=El pa\u00eds no puede estar vac\u00edo

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_fr.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=Le mot de passe ne peut pas \u00eatre vide  
+NotBlank.email=L'email ne peut pas \u00eatre vide  
+NotBlank.codeType=Le type de code de v\u00e9rification ne peut pas \u00eatre vide  
+NotBlank.loginName=Le nom de compte ne peut pas \u00eatre vide  
+NotBlank.uuid=L'identifiant unique ne peut pas \u00eatre vide  
+NotBlank.phone=Le num\u00e9ro de t\u00e9l\u00e9phone ne peut pas \u00eatre vide  
+NotBlank.zone=Le code r\u00e9gional ne peut pas \u00eatre vide  
+NotBlank.code=Le code de v\u00e9rification ne peut pas \u00eatre vide  
+Email.format.err=Le format de l'email est incorrect  
+NotBlank.socialAccount=Le compte social ne peut pas \u00eatre vide  
+NotBlank.socialType=Le type de compte social ne peut pas \u00eatre vide  
+NotNull.direction=La direction ne peut pas \u00eatre vide  
+NotBlank.symbol=La devise de transaction ne peut pas \u00eatre vide  
+NotBlank.legalCoin=La monnaie l\u00e9gale ne peut pas \u00eatre vide  
+NotNull.priceType=Le type de prix ne peut pas \u00eatre vide  
+NotNull.price=Le prix ne peut pas \u00eatre vide  
+NotNull.num=La quantit\u00e9 ne peut pas \u00eatre vide  
+NotNull.minAmount=Le montant minimum ne peut pas \u00eatre vide  
+NotNull.maxAmount=Le montant maximum ne peut pas \u00eatre vide  
+NotBlank.payway=Le mode de paiement ne peut pas \u00eatre vide  
+NotNull.adId=Le num\u00e9ro de l'annonce ne peut pas \u00eatre vide  
+NotNull.merchantId=Le num\u00e9ro du commer\u00e7ant ne peut pas \u00eatre vide  
+NotNull.status=Le statut ne peut pas \u00eatre vide  
+NotNull.payType=Le mode de paiement ne peut pas \u00eatre vide  
+NotBlank.receiptInfo=Les informations de r\u00e9ception ne peuvent pas \u00eatre vides  
+NotNull.c2cAdId=Le num\u00e9ro de l'annonce ne peut pas \u00eatre vide  
+NotNull.tranAmount=Le montant de la transaction ne peut pas \u00eatre vide  
+NotNull.tranBy=Le mode de transaction ne peut pas \u00eatre vide  
+NotNull.oId=Le num\u00e9ro de commande ne peut pas \u00eatre vide  
+NotBlank.img=La preuve de paiement ne peut pas \u00eatre vide  
+NotNull.id=Le num\u00e9ro ne peut pas \u00eatre vide  
+NotBlank.orderNo=Le num\u00e9ro de commande ne peut pas \u00eatre vide  
+NotNull.flow=Le statut ne peut pas \u00eatre vide  
+NotNull.orderId=Le num\u00e9ro de commande ne peut pas \u00eatre vide  
+NotBlank.reason=La raison de la plainte ne peut pas \u00eatre vide  
+NotBlank.remark=La description de la preuve ne peut pas \u00eatre vide  
+NotBlank.img1=La capture d'\u00e9cran de la preuve 1 ne peut pas \u00eatre vide  
+NotNull.complainId=Le num\u00e9ro de la plainte ne peut pas \u00eatre vide  
+NotBlank.country=Le pays ne peut pas \u00eatre vide

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_ja.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.email=\u30e1\u30fc\u30eb\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.codeType=\u8a8d\u8a3c\u30b3\u30fc\u30c9\u306e\u7a2e\u985e\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.loginName=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.uuid=\u30e6\u30cb\u30fc\u30af\u8b58\u5225\u5b50\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.phone=\u643a\u5e2f\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.zone=\u5e02\u5916\u5c40\u756a\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.code=\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+Email.format.err=\u30e1\u30fc\u30eb\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093
+NotBlank.socialAccount=\u30bd\u30fc\u30b7\u30e3\u30eb\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.socialType=\u30bd\u30fc\u30b7\u30e3\u30eb\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7a2e\u985e\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.direction=\u65b9\u5411\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.symbol=\u53d6\u5f15\u901a\u8ca8\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.legalCoin=\u6cd5\u5b9a\u901a\u8ca8\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.priceType=\u4fa1\u683c\u30bf\u30a4\u30d7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.price=\u4fa1\u683c\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.num=\u6570\u91cf\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.minAmount=\u6700\u5c0f\u91d1\u984d\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.maxAmount=\u6700\u5927\u91d1\u984d\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.payway=\u652f\u6255\u3044\u65b9\u6cd5\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.adId=\u5e83\u544a\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.merchantId=\u5546\u5bb6\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.status=\u72b6\u614b\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.payType=\u652f\u6255\u3044\u30bf\u30a4\u30d7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.receiptInfo=\u53d7\u53d6\u60c5\u5831\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.c2cAdId=\u5e83\u544a\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.tranAmount=\u53d6\u5f15\u91d1\u984d\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.tranBy=\u53d6\u5f15\u65b9\u6cd5\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.oId=\u6ce8\u6587\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.img=\u652f\u6255\u3044\u8a3c\u660e\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.id=\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.orderNo=\u6ce8\u6587\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.flow=\u72b6\u614b\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.orderId=\u6ce8\u6587\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.reason=\u7533\u7acb\u7406\u7531\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.remark=\u8a3c\u660e\u306e\u8aac\u660e\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.img1=\u8a3c\u660e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c81\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotNull.complainId=\u7533\u7acb\u756a\u53f7\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093
+NotBlank.country=\u56fd\u3092\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_ko.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=\ube44\ubc00\ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.email=\uc774\uba54\uc77c\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.codeType=\uc778\uc99d \ucf54\ub4dc \uc720\ud615\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.loginName=\uacc4\uc815\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.uuid=\uace0\uc720 \uc2dd\ubcc4\uc790\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.phone=\ud734\ub300\ud3f0 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.zone=\uc9c0\uc5ed \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.code=\uc778\uc99d \ucf54\ub4dc\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+Email.format.err=\uc774\uba54\uc77c \ud615\uc2dd\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4  
+NotBlank.socialAccount=\uc18c\uc15c \uacc4\uc815\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.socialType=\uc18c\uc15c \uacc4\uc815 \uc720\ud615\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.direction=\ubc29\ud5a5\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.symbol=\uac70\ub798 \ud1b5\ud654\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.legalCoin=\ubc95\uc815 \ud654\ud3d0\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.priceType=\uac00\uaca9 \uc720\ud615\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.price=\uac00\uaca9\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.num=\uc218\ub7c9\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.minAmount=\ucd5c\uc18c \uae08\uc561\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.maxAmount=\ucd5c\ub300 \uae08\uc561\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.payway=\uacb0\uc81c \ubc29\uc2dd\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.adId=\uad11\uace0 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.merchantId=\uc0c1\uc778 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.status=\uc0c1\ud0dc\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.payType=\uacb0\uc81c \ubc29\uc2dd\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.receiptInfo=\uc218\ucde8 \uc815\ubcf4\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.c2cAdId=\uad11\uace0 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.tranAmount=\uac70\ub798 \uae08\uc561\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.tranBy=\uac70\ub798 \ubc29\uc2dd\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.oId=\uc8fc\ubb38 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.img=\uacb0\uc81c \uc99d\uba85\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.id=\ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.orderNo=\uc8fc\ubb38 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.flow=\uc0c1\ud0dc\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.orderId=\uc8fc\ubb38 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.reason=\uc2e0\uace0 \uc0ac\uc720\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.remark=\uc99d\ube59 \uc124\uba85\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.img1=\uc99d\ube59 \uc2a4\ud06c\ub9b0\uc0f71\uc740 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotNull.complainId=\uc2e0\uace0 \ubc88\ud638\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4  
+NotBlank.country=\uad6d\uac00\ub294 \ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_th.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.email=\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.codeType=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.loginName=\u0e0a\u0e37\u0e48\u0e2d\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.uuid=\u0e23\u0e2b\u0e31\u0e2a\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e15\u0e31\u0e27\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.phone=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.zone=\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e02\u0e15\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.code=\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+Email.format.err=\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
+NotBlank.socialAccount=\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e42\u0e0b\u0e40\u0e0a\u0e35\u0e22\u0e25\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.socialType=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e42\u0e0b\u0e40\u0e0a\u0e35\u0e22\u0e25\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.direction=\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.symbol=\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e02\u0e32\u0e22\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.legalCoin=\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e01\u0e0e\u0e2b\u0e21\u0e32\u0e22\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.priceType=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e2d\u0e07\u0e23\u0e32\u0e04\u0e32\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49
+NotNull.price=\u0e23\u0e32\u0e04\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.num=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.minAmount=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e07\u0e34\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.maxAmount=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e07\u0e34\u0e19\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.payway=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.adId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e06\u0e29\u0e13\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.merchantId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1c\u0e39\u0e49\u0e04\u0e49\u0e32\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49
+NotNull.status=\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.payType=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.receiptInfo=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.c2cAdId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e06\u0e29\u0e13\u0e32 C2C \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.tranAmount=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e07\u0e34\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.tranBy=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e17\u0e33\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.oId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e0b\u0e37\u0e49\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49
+NotBlank.img=\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e01\u0e32\u0e23\u0e0a\u0e33\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.id=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.orderNo=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e0b\u0e37\u0e49\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49
+NotNull.flow=\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.orderId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e0b\u0e37\u0e49\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49
+NotBlank.reason=\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e43\u0e19\u0e01\u0e32\u0e23\u0e23\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.remark=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.img1=\u0e20\u0e32\u0e1e\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48 1 \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotNull.complainId=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e01\u0e32\u0e23\u0e23\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07
+NotBlank.country=\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e07

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_tw.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=\u5bc6\u78bc\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.email=\u90f5\u7bb1\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.codeType=\u9a57\u8b49\u78bc\u985e\u578b\u4e0d\u80fd\u7a7a
+NotBlank.loginName=\u5e33\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.uuid=\u552f\u4e00\u6a19\u8b58\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.phone=\u624b\u6a5f\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.zone=\u5340\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.code=\u9a57\u8b49\u78bc\u4e0d\u80fd\u70ba\u7a7a
+Email.format.err=\u90f5\u7bb1\u683c\u5f0f\u4e0d\u6b63\u78ba
+NotBlank.socialAccount=\u793e\u4ea4\u5e33\u865f\u4e0d\u80fd\u7a7a
+NotBlank.socialType=\u793e\u4ea4\u5e33\u865f\u985e\u578b\u4e0d\u80fd\u7a7a
+NotNull.direction=\u65b9\u5411\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.symbol=\u4ea4\u6613\u5e63\u7a2e\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.legalCoin=\u6cd5\u5e63\u4e0d\u80fd\u70ba\u7a7a
+NotNull.priceType=\u50f9\u683c\u985e\u578b\u4e0d\u80fd\u70ba\u7a7a
+NotNull.price=\u50f9\u683c\u4e0d\u80fd\u70ba\u7a7a
+NotNull.num=\u6578\u91cf\u4e0d\u80fd\u70ba\u7a7a
+NotNull.minAmount=\u6700\u5c0f\u91d1\u984d\u4e0d\u80fd\u70ba\u7a7a
+NotNull.maxAmount=\u6700\u5927\u91d1\u984d\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.payway=\u652f\u4ed8\u65b9\u5f0f\u4e0d\u80fd\u70ba\u7a7a
+NotNull.adId=\u5ee3\u544a\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotNull.merchantId=\u5546\u5bb6\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotNull.status=\u72c0\u614b\u4e0d\u80fd\u7a7a
+NotNull.payType=\u652f\u4ed8\u65b9\u5f0f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.receiptInfo=\u6536\u6b3e\u4fe1\u606f\u4e0d\u80fd\u7a7a
+NotNull.c2cAdId=\u5ee3\u544a\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotNull.tranAmount=\u4ea4\u6613\u91d1\u984d\u4e0d\u80fd\u70ba\u7a7a
+NotNull.tranBy=\u4ea4\u6613\u65b9\u5f0f\u4e0d\u80fd\u70ba\u7a7a
+NotNull.oId=\u8a02\u55ae\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.img=\u652f\u4ed8\u6191\u8b49\u4e0d\u80fd\u70ba\u7a7a
+NotNull.id=\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.orderNo=\u8a02\u55ae\u7de8\u865f\u4e0d\u80fd\u7a7a
+NotNull.flow=\u72c0\u614b\u4e0d\u80fd\u7a7a
+NotNull.orderId=\u8a02\u55ae\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.reason=\u7533\u8a34\u539f\u56e0\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.remark=\u6191\u8b49\u63cf\u8ff0\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.img1=\u6191\u8b49\u622a\u57161\u4e0d\u80fd\u70ba\u7a7a
+NotNull.complainId=\u7533\u8a34\u7de8\u865f\u4e0d\u80fd\u70ba\u7a7a
+NotBlank.country=\u570b\u5bb6\u4e0d\u80fd\u70ba\u7a7a

+ 39 - 1
qnfhq-api/src/main/resources/i18n/validation_vi.properties

@@ -1 +1,39 @@
-appregister.loginpassword.required=Kata laluan tidak boleh kosong.
+NotBlank.password=M\u1eadt kh\u1ea9u kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.email=Email kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.codeType=Lo\u1ea1i m\u00e3 x\u00e1c nh\u1eadn kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.loginName=T\u00e0i kho\u1ea3n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.uuid=\u0110\u1ecbnh danh duy nh\u1ea5t kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.phone=S\u1ed1 \u0111i\u1ec7n tho\u1ea1i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.zone=M\u00e3 v\u00f9ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.code=M\u00e3 x\u00e1c nh\u1eadn kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+Email.format.err=\u0110\u1ecbnh d\u1ea1ng email kh\u00f4ng \u0111\u00fang
+NotBlank.socialAccount=T\u00e0i kho\u1ea3n m\u1ea1ng x\u00e3 h\u1ed9i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.socialType=Lo\u1ea1i t\u00e0i kho\u1ea3n m\u1ea1ng x\u00e3 h\u1ed9i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.direction=H\u01b0\u1edbng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.symbol=Lo\u1ea1i ti\u1ec1n giao d\u1ecbch kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.legalCoin=Ti\u1ec1n ph\u00e1p \u0111\u1ecbnh kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.priceType=Lo\u1ea1i gi\u00e1 kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.price=Gi\u00e1 kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.num=S\u1ed1 l\u01b0\u1ee3ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.minAmount=S\u1ed1 ti\u1ec1n t\u1ed1i thi\u1ec3u kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.maxAmount=S\u1ed1 ti\u1ec1n t\u1ed1i \u0111a kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.payway=Ph\u01b0\u01a1ng th\u1ee9c thanh to\u00e1n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.adId=M\u00e3 qu\u1ea3ng c\u00e1o kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.merchantId=M\u00e3 th\u01b0\u01a1ng nh\u00e2n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.status=Tr\u1ea1ng th\u00e1i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.payType=Ph\u01b0\u01a1ng th\u1ee9c thanh to\u00e1n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.receiptInfo=Th\u00f4ng tin nh\u1eadn ti\u1ec1n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.c2cAdId=M\u00e3 qu\u1ea3ng c\u00e1o kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.tranAmount=S\u1ed1 ti\u1ec1n giao d\u1ecbch kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.tranBy=Ph\u01b0\u01a1ng th\u1ee9c giao d\u1ecbch kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.oId=M\u00e3 \u0111\u01a1n h\u00e0ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.img=B\u1eb1ng ch\u1ee9ng thanh to\u00e1n kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.id=M\u00e3 s\u1ed1 kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.orderNo=M\u00e3 \u0111\u01a1n h\u00e0ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.flow=Tr\u1ea1ng th\u00e1i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.orderId=M\u00e3 \u0111\u01a1n h\u00e0ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.reason=L\u00fd do khi\u1ebfu n\u1ea1i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.remark=M\u00f4 t\u1ea3 b\u1eb1ng ch\u1ee9ng kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.img1=\u1ea2nh ch\u1ee5p b\u1eb1ng ch\u1ee9ng 1 kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotNull.complainId=M\u00e3 khi\u1ebfu n\u1ea1i kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng
+NotBlank.country=Qu\u1ed1c gia kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng

+ 0 - 2
qnfhq-api/src/main/resources/i18n/validation_zh.properties

@@ -7,7 +7,6 @@ NotBlank.phone=\u624b\u673a\u53f7\u4e0d\u80fd\u4e3a\u7a7a
 NotBlank.zone=\u533a\u53f7\u4e0d\u80fd\u4e3a\u7a7a
 NotBlank.code=\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a
 Email.format.err=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e
-
 NotBlank.socialAccount=\u793e\u4ea4\u8d26\u53f7\u4e0d\u80fd\u7a7a
 NotBlank.socialType=\u793e\u4ea4\u8d26\u53f7\u7c7b\u578b\u4e0d\u80fd\u7a7a
 NotNull.direction=\u65b9\u5411\u4e0d\u80fd\u4e3a\u7a7a
@@ -24,7 +23,6 @@ NotNull.merchantId=\u5546\u5bb6\u7f16\u53f7\u4e0d\u80fd\u4e3a\u7a7a
 NotNull.status=\u72b6\u6001\u4e0d\u80fd\u7a7a
 NotNull.payType=\u652f\u4ed8\u65b9\u5f0f\u4e0d\u80fd\u4e3a\u7a7a
 NotBlank.receiptInfo=\u6536\u6b3e\u4fe1\u606f\u4e0d\u80fd\u7a7a
-
 NotNull.c2cAdId=\u5e7f\u544a\u7f16\u53f7\u4e0d\u80fd\u4e3a\u7a7a
 NotNull.tranAmount=\u4ea4\u6613\u91d1\u989d\u4e0d\u80fd\u4e3a\u7a7a
 NotNull.tranBy=\u4ea4\u6613\u65b9\u5f0f\u4e0d\u80fd\u4e3a\u7a7a