diff --git a/src/main/java/au/com/royalpay/payment/manage/application/core/impls/SimpleClientApplyServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/application/core/impls/SimpleClientApplyServiceImpl.java index da97b1b9b..1a47518c6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/application/core/impls/SimpleClientApplyServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/application/core/impls/SimpleClientApplyServiceImpl.java @@ -48,6 +48,8 @@ import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; @@ -56,11 +58,9 @@ import javax.annotation.Resource; import cn.yixblog.platform.http.HttpRequestGenerator; import cn.yixblog.platform.http.HttpRequestResult; - @Service public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { - @Value("${royalpay.sms.appid:1400094878}") private int appId; @Value("${royalpay.sms.appkey:43390d81e20c5191c278fbf4cd275be2}") @@ -97,6 +97,8 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { private ClientConfigMapper clientConfigMapper; @Resource private PmtSubMerchantIdMapper pmtSubMerchantIdMapper; + private ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 10, 5, TimeUnit.SECONDS, new LinkedBlockingQueue()); + @Resource private StringRedisTemplate stringRedisTemplate; @@ -140,7 +142,6 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { if (StringUtils.isNotEmpty(value)) { throw new BadRequestException("SMS has been sent,Please check your messages or try again in 3 minutes."); } - JSONObject sysConfig = sysConfigManager.getSysConfig(); ArrayList param = new ArrayList<>(); String registerClientCode = RandomStringUtils.random(6, false, true); param.add("RoyalPay"); @@ -158,17 +159,17 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { } @Override - public void sendVerifyEmail(String address, int client_id,String username) { + public void sendVerifyEmail(String address, int client_id, String username) { JSONObject client = clientManager.getClientInfo(client_id); if (client == null) { throw new BadRequestException("Merchant not found"); } - if(client.getBooleanValue("mail_confirm")){ - throw new BadRequestException("mail address has been verified"); + if (client.getBooleanValue("mail_confirm")) { + throw new BadRequestException("mail address has been verified"); } String key = checkOrGenerateVerifyMailKey(address, null); Context ctx = new Context(); - ctx.setVariable("url", PlatformEnvironment.getEnv().concatUrl("/register/account/mail/" + address + "/verify/" + key + "/jump?username="+username)); + ctx.setVariable("url", PlatformEnvironment.getEnv().concatUrl("/register/account/mail/" + address + "/verify/" + key + "/jump?username=" + username)); final String content = thymeleaf.process("mail/register_application", ctx); SendMail sendMail = new SendMail(); Set to = new HashSet<>(); @@ -226,13 +227,13 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { } @Override - public void checkAccountName(String contact_phone,String nation_code) { + public void checkAccountName(String contact_phone, String nation_code) { nation_code = nation_code.trim(); - if(!nation_code.startsWith("+")){ - nation_code ="+"+nation_code; + if (!nation_code.startsWith("+")) { + nation_code = "+" + nation_code; } - JSONObject account = clientAccountMapper.findByPhone(contact_phone,nation_code); - if (account != null){ + JSONObject account = clientAccountMapper.findByPhone(contact_phone, nation_code); + if (account != null) { throw new ForbiddenException("用户名已被注册"); } } @@ -241,125 +242,125 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { @Transactional public void saveOrUpdateApplyInfo(JSONObject applyInfo, String username) { JSONObject apply = sysClientPreMapperMapper.findByUserName(username); - if (apply == null ){ + if (apply == null) { sysClientPreMapperMapper.save(applyInfo); - }else { + } else { applyInfo.put("client_pre_apply_id", apply.getIntValue("client_pre_apply_id")); applyInfo.put("update_time", new Date()); sysClientPreMapperMapper.update(applyInfo); - if(applyInfo.getBooleanValue("agree")){ + if (applyInfo.getBooleanValue("agree")) { applyerToClient(username); } } } - private void applyerToClient(String username){ + private void applyerToClient(String username) { Date now = new Date(); JSONObject param = new JSONObject(); - param.put("begin_time",DateFormatUtils.format(now,"YYYYMMdd")); - param.put("end_time",DateFormatUtils.format(DateUtils.addDays(now,1),"YYYYMMdd")); - param.put("agree",true); - List existCount = sysClientPreMapperMapper.query(param); - if(existCount.size()>30){ + param.put("begin_time", DateFormatUtils.format(now, "YYYYMMdd")); + param.put("end_time", DateFormatUtils.format(DateUtils.addDays(now, 1), "YYYYMMdd")); + param.put("agree", true); + List existCount = sysClientPreMapperMapper.query(param); + if (existCount.size() > 30) { throw new BadRequestException("New merchant over limit,Please contact us"); } JSONObject apply = sysClientPreMapperMapper.findByUserName(username); JSONObject sysConfig = sysConfigManager.getSysConfig(); - String arr [] = sysConfig.getString("temp_sub_mch_id").split(","); - String tempSubMerchantId = arr[new Random().nextInt(arr.length)]; + String arr[] = sysConfig.getString("temp_sub_mch_id").split(","); + String tempSubMerchantId = arr[new Random().nextInt(arr.length)]; WeChatPayConfig.Merchant availableMerchant = mpPaymentApi.determineMerchant(tempSubMerchantId); String clientMoniker = generateClientMoniker(); JSONObject sysClient = new JSONObject(); - sysClient.put("company_name",apply.getString("company_name")); - sysClient.put("abn",apply.getString("abn")); - sysClient.put("short_name",apply.getString("short_name")); - sysClient.put("address",apply.getString("address")); - sysClient.put("suburb",apply.getString("suburb")); - sysClient.put("state",apply.getString("state")); - sysClient.put("postcode",apply.getString("postcode")); - sysClient.put("royalpayindustry",apply.getString("industry")); - sysClient.put("contact_person",apply.getString("contact_person")); - sysClient.put("contact_email",apply.getString("contact_email")); - sysClient.put("contact_phone",apply.getString("contact_phone")); - sysClient.put("company_phone",apply.getString("company_phone")); - sysClient.put("client_moniker",clientMoniker); - sysClient.put("create_time",new Date()); - sysClient.put("source",4); - sysClient.put("org_id",1); - sysClient.put("approve_result",2); - sysClient.put("approve_time",new Date()); - sysClient.put("creator",0); - sysClient.put("business_name",apply.getString("short_name")); - sysClient.put("industry",331); + sysClient.put("company_name", apply.getString("company_name")); + sysClient.put("abn", apply.getString("abn")); + sysClient.put("short_name", apply.getString("short_name")); + sysClient.put("address", apply.getString("address")); + sysClient.put("suburb", apply.getString("suburb")); + sysClient.put("state", apply.getString("state")); + sysClient.put("postcode", apply.getString("postcode")); + sysClient.put("royalpayindustry", apply.getString("industry")); + sysClient.put("contact_person", apply.getString("contact_person")); + sysClient.put("contact_email", apply.getString("contact_email")); + sysClient.put("contact_phone", apply.getString("contact_phone")); + sysClient.put("company_phone", apply.getString("company_phone")); + sysClient.put("client_moniker", clientMoniker); + sysClient.put("create_time", new Date()); + sysClient.put("source", 4); + sysClient.put("org_id", 1); + sysClient.put("approve_result", 2); + sysClient.put("approve_time", new Date()); + sysClient.put("creator", 0); + sysClient.put("business_name", apply.getString("short_name")); + sysClient.put("industry", 331); sysClient.put("merchant_id", availableMerchant.getMerchantId()); - sysClient.put("sub_merchant_id",tempSubMerchantId); - sysClient.put("common_sub_merchant_id",1); - sysClient.put("skip_clearing",1); - sysClient.put("country","AUS"); + sysClient.put("sub_merchant_id", tempSubMerchantId); + sysClient.put("common_sub_merchant_id", 1); + sysClient.put("skip_clearing", 1); + sysClient.put("country", "AUS"); sysClient.put("credential_code", RandomStringUtils.random(32, true, true)); clientMapper.save(sysClient); int clientId = sysClient.getIntValue("client_id"); JSONObject sysAccount = new JSONObject(); - sysAccount.put("username",apply.getString("username")); - sysAccount.put("display_name",apply.getString("username")); + sysAccount.put("username", apply.getString("username")); + sysAccount.put("display_name", apply.getString("username")); String salt = PasswordUtils.newSalt(); sysAccount.put("salt", salt); sysAccount.put("role", 1); sysAccount.put("password_hash", PasswordUtils.hashPwd(apply.getString("password"), salt)); sysAccount.put("password_aes", PasswordUtils.encryptAESPwd(apply.getString("password"))); - sysAccount.put("creator",0); - sysAccount.put("contact_phone",apply.getString("contact_phone")); - sysAccount.put("client_id",clientId); - sysAccount.put("create_time",new Date()); - sysAccount.put("is_password_expired",0); - sysAccount.put("nation_code","+61"); + sysAccount.put("creator", 0); + sysAccount.put("contact_phone", apply.getString("contact_phone")); + sysAccount.put("client_id", clientId); + sysAccount.put("create_time", new Date()); + sysAccount.put("is_password_expired", 0); + sysAccount.put("nation_code", "+61"); clientAccountMapper.save(sysAccount); JSONObject sysBank = new JSONObject(); - sysBank.put("client_id",clientId); - sysBank.put("account_no",apply.getString("bank_no")); - sysBank.put("account_name",apply.getString("bank_name")); - sysBank.put("bsb_no",apply.getString("bsb_no")); + sysBank.put("client_id", clientId); + sysBank.put("account_no", apply.getString("bank_no")); + sysBank.put("account_name", apply.getString("bank_name")); + sysBank.put("bsb_no", apply.getString("bsb_no")); JSONObject bankInfo = getBankInfo(apply.getString("bsb_no")); - sysBank.put("bank",bankInfo.getString("bank")); - sysBank.put("city",bankInfo.getString("city")); - sysBank.put("address",bankInfo.getString("address")); - sysBank.put("system",bankInfo.getString("system")); - sysBank.put("postcode",bankInfo.getString("postcode")); - sysBank.put("state",bankInfo.getString("state")); - sysBank.put("branch",bankInfo.getString("branch")); + sysBank.put("bank", bankInfo.getString("bank")); + sysBank.put("city", bankInfo.getString("city")); + sysBank.put("address", bankInfo.getString("address")); + sysBank.put("system", bankInfo.getString("system")); + sysBank.put("postcode", bankInfo.getString("postcode")); + sysBank.put("state", bankInfo.getString("state")); + sysBank.put("branch", bankInfo.getString("branch")); clientBankAccountMapper.save(sysBank); JSONObject clientConfig = new JSONObject(); - clientConfig.put("client_id",clientId); - clientConfig.put("skip_clearing",1); - clientConfig.put("client_moniker",clientMoniker); - clientConfig.put("clean_days",apply.getIntValue("clean_days")); - clientConfig.put("common_sub_merchant_id",1); + clientConfig.put("client_id", clientId); + clientConfig.put("skip_clearing", 1); + clientConfig.put("client_moniker", clientMoniker); + clientConfig.put("clean_days", apply.getIntValue("clean_days")); + clientConfig.put("common_sub_merchant_id", 1); clientConfigMapper.save(clientConfig); JSONObject sysRate = new JSONObject(); - sysRate.put("client_id",clientId); - sysRate.put("clean_days",apply.getIntValue("clean_days")); - sysRate.put("remark","自主申请"); + sysRate.put("client_id", clientId); + sysRate.put("clean_days", apply.getIntValue("clean_days")); + sysRate.put("remark", "自主申请"); sysRate.put("create_time", new Date()); sysRate.put("update_time", new Date()); sysRate.put("active_time", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); - sysRate.put("expiry_time", DateFormatUtils.format(DateUtils.addYears(new Date(),1), "yyyy-MM-dd")); + sysRate.put("expiry_time", DateFormatUtils.format(DateUtils.addYears(new Date(), 1), "yyyy-MM-dd")); JSONObject rateConfig = clientManager.getSysRateConfig(); JSONObject chooseRate = new JSONObject(); - if (apply.getIntValue("clean_days") == 1){ + if (apply.getIntValue("clean_days") == 1) { chooseRate = rateConfig.getJSONObject("t1"); } - if (apply.getIntValue("clean_days") == 2){ + if (apply.getIntValue("clean_days") == 2) { chooseRate = rateConfig.getJSONObject("t2"); } - if (apply.getIntValue("clean_days") == 3){ + if (apply.getIntValue("clean_days") == 3) { chooseRate = rateConfig.getJSONObject("t3"); } sysRate.putAll(chooseRate); @@ -369,23 +370,25 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { configNewClientRate(sysRate, clientId, "AlipayOnline", "AlipayOnline"); configNewClientRate(sysRate, clientId, "Bestpay", "Bestpay"); configNewClientRate(sysRate, clientId, "jd", "JDpay"); - try { - clientManager.getNewAggregateAgreeFile(clientMoniker,null,false); - } catch (Exception ignore) { - } + Runnable task2 = () -> { + try { + clientManager.getNewAggregateAgreeFile(clientMoniker, null, false); + } catch (Exception ignore) { + } + }; + pool.execute(task2); } - private String generateClientMoniker(){ + private String generateClientMoniker() { String clientMoniker = RandomStringUtils.random(4, true, true).toUpperCase(); JSONObject client = clientMapper.findClientByMoniker(clientMoniker); - if (client != null){ + if (client != null) { generateClientMoniker(); } return clientMoniker; } - private void configNewClientRate(JSONObject config, int clientId, String channel, String rateKey) { if (config.containsKey(rateKey)) { JSONObject newConfig = new JSONObject(); @@ -430,13 +433,13 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { throw new BadRequestException(LocaleSupport.localeMessage("error.login.password")); } JSONObject record = new JSONObject(); - record.put("client_id",client.getIntValue("client_id")); - record.put("mail_confirm",true); + record.put("client_id", client.getIntValue("client_id")); + record.put("mail_confirm", true); clientMapper.update(record); } - private String getRegisterClientRedisKey(String phoneNumber){ - return REGISTER_CLIENT_PREFIX +phoneNumber; + private String getRegisterClientRedisKey(String phoneNumber) { + return REGISTER_CLIENT_PREFIX + phoneNumber; } private String getRegisterClientProcessRedisKey(String codeKey) {