diff --git a/src/main/java/au/com/royalpay/payment/manage/application/beans/ClientPreApplyBean.java b/src/main/java/au/com/royalpay/payment/manage/application/beans/ClientPreApplyBean.java new file mode 100644 index 000000000..6520aa333 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/application/beans/ClientPreApplyBean.java @@ -0,0 +1,191 @@ +package au.com.royalpay.payment.manage.application.beans; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.time.DateUtils; + +import java.util.Date; + +/** + * Created by yuan on 2018/5/23. + */ +public class ClientPreApplyBean { + private String username; + private String password; + private String contact_person; + private String contact_phone; + private String contact_email; + private String company_name; + private String company_phone; + private String abn; + private String short_name; + private String address; + private String suburb; + private String state; + private String postcode; + private String industry; + + private String bank_no; + private String bank_name; + private String bsb_no; + + private String clean_days; + + private boolean agree; + + public JSONObject insertObject() { + JSONObject res = (JSONObject) JSON.toJSON(this); + return res; + } + public String getCompany_name() { + return company_name; + } + + public void setCompany_name(String company_name) { + this.company_name = company_name; + } + + public String getAbn() { + return abn; + } + + public void setAbn(String abn) { + this.abn = abn; + } + + public String getShort_name() { + return short_name; + } + + public void setShort_name(String short_name) { + this.short_name = short_name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getSuburb() { + return suburb; + } + + public void setSuburb(String suburb) { + this.suburb = suburb; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getPostcode() { + return postcode; + } + + public void setPostcode(String postcode) { + this.postcode = postcode; + } + + public String getIndustry() { + return industry; + } + + public void setIndustry(String industry) { + this.industry = industry; + } + + public String getBank_no() { + return bank_no; + } + + public void setBank_no(String bank_no) { + this.bank_no = bank_no; + } + + public String getBank_name() { + return bank_name; + } + + public void setBank_name(String bank_name) { + this.bank_name = bank_name; + } + + public String getBsb_no() { + return bsb_no; + } + + public void setBsb_no(String bsb_no) { + this.bsb_no = bsb_no; + } + + public String getClean_days() { + return clean_days; + } + + public void setClean_days(String clean_days) { + this.clean_days = clean_days; + } + + public boolean isAgree() { + return agree; + } + + public void setAgree(boolean agree) { + this.agree = agree; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getContact_person() { + return contact_person; + } + + public void setContact_person(String contact_person) { + this.contact_person = contact_person; + } + + public String getContact_phone() { + return contact_phone; + } + + public void setContact_phone(String contact_phone) { + this.contact_phone = contact_phone; + } + + public String getContact_email() { + return contact_email; + } + + public void setContact_email(String contact_email) { + this.contact_email = contact_email; + } + + public String getCompany_phone() { + return company_phone; + } + + public void setCompany_phone(String company_phone) { + this.company_phone = company_phone; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/application/core/SimpleClientApplyService.java b/src/main/java/au/com/royalpay/payment/manage/application/core/SimpleClientApplyService.java index 3d4f2ecca..0b7897563 100644 --- a/src/main/java/au/com/royalpay/payment/manage/application/core/SimpleClientApplyService.java +++ b/src/main/java/au/com/royalpay/payment/manage/application/core/SimpleClientApplyService.java @@ -1,5 +1,6 @@ package au.com.royalpay.payment.manage.application.core; +import au.com.royalpay.payment.manage.application.beans.ClientPreApplyBean; import au.com.royalpay.payment.manage.merchants.beans.NewAccountBean; import com.alibaba.fastjson.JSONObject; @@ -24,4 +25,9 @@ public interface SimpleClientApplyService { void verifyMail(String address, JSONObject loginAccount); + void updateApplyInfo(ClientPreApplyBean companyBean,String client_moniker); + + JSONObject getBankInfo(String bsb_no); + + void checkAccountName(String acocunt_name); } 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 75de65512..e087ce4ed 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 @@ -1,6 +1,9 @@ package au.com.royalpay.payment.manage.application.core.impls; +import au.com.royalpay.payment.manage.application.beans.ClientPreApplyBean; import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService; +import au.com.royalpay.payment.manage.mappers.system.*; +import au.com.royalpay.payment.manage.mappers.preapply.SysClientPreMapperMapper; import au.com.royalpay.payment.manage.merchants.beans.NewAccountBean; import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.signin.beans.LoginInfo; @@ -9,34 +12,46 @@ import au.com.royalpay.payment.manage.system.core.MailGunService; import au.com.royalpay.payment.tools.env.PlatformEnvironment; import au.com.royalpay.payment.tools.env.SysConfigManager; import au.com.royalpay.payment.tools.exceptions.BadRequestException; +import au.com.royalpay.payment.tools.exceptions.ForbiddenException; import au.com.royalpay.payment.tools.exceptions.ServerErrorException; import au.com.royalpay.payment.tools.locale.LocaleSupport; import au.com.royalpay.payment.tools.mail.SendMail; +import au.com.royalpay.payment.tools.utils.PasswordUtils; +import cn.yixblog.platform.http.HttpRequestGenerator; +import cn.yixblog.platform.http.HttpRequestResult; import com.alibaba.fastjson.JSONObject; import com.github.qcloudsms.SmsSingleSender; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.RequestMethod; import org.thymeleaf.context.Context; import org.thymeleaf.spring4.SpringTemplateEngine; +import javax.annotation.PostConstruct; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.*; import java.util.concurrent.TimeUnit; -import javax.annotation.PostConstruct; -import javax.annotation.Resource; @Service public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { + @Value("${royalpay.sms.appid}") private int appId; @Value("${royalpay.sms.appkey}") @@ -52,6 +67,24 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { @Resource private SignInAccountService signInAccountService; + @Resource + private ClientAccountMapper clientAccountMapper; + + @Resource + private SysClientPreMapperMapper sysClientPreMapperMapper; + + @Resource + private ClientBankAccountMapper clientBankAccountMapper; + + @Resource + private ClientMapper clientMapper; + + @Resource + private ClientRateMapper clientRateMapper; + + @Resource + private ClientConfigMapper clientConfigMapper; + @Resource private StringRedisTemplate stringRedisTemplate; private final SmsSingleSender ssender = new SmsSingleSender(appId, appKey); @@ -174,6 +207,163 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { stringRedisTemplate.delete(getVerifyMailRedisKey(codeKey)); } + @Override + public void checkAccountName(String account_name) { + JSONObject account = clientAccountMapper.findByUsernameForDuplicate(account_name); + if (account != null){ + throw new ForbiddenException("用户名已被注册"); + } + } + + @Override + @Transactional + public void updateApplyInfo(ClientPreApplyBean companyBean, String username) { + JSONObject apply = sysClientPreMapperMapper.findByUserName(username); + if (apply == null ){ + throw new BadRequestException(); + } + JSONObject applyInfo = companyBean.insertObject(); + applyInfo.put("client_pre_apply_id",apply.getIntValue("client_pre_apply_id")); + applyInfo.put("update_time",new Date()); + sysClientPreMapperMapper.update(applyInfo); + if(applyInfo.getBoolean("agree")){ + applyerToClient(username); + } + } + + @Transactional + private void applyerToClient(String username){ + JSONObject apply = sysClientPreMapperMapper.findByUserName(username); + + 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("industry",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("creator",0); + 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")); + String salt = PasswordUtils.newSalt(); + sysAccount.put("salt", salt); + 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("password_hash",apply.getString("password")); + sysAccount.put("client_id",clientId); + sysAccount.put("create_time",new Date()); + 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")); + 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")); + clientBankAccountMapper.save(sysBank); + + JSONObject sysConfig = new JSONObject(); + sysConfig.put("client_id",clientId); + sysConfig.put("client_moniker",clientMoniker); + sysConfig.put("clean_days",apply.getIntValue("clean_days")); + clientConfigMapper.save(sysConfig); + + JSONObject sysRate = new JSONObject(); + 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")); + + JSONObject rateConfig = clientManager.getSysRateConfig(); + JSONObject chooseRate = new JSONObject(); + if (apply.getIntValue("clean_days") == 1){ + chooseRate = rateConfig.getJSONObject("t1"); + } + if (apply.getIntValue("clean_days") == 2){ + chooseRate = rateConfig.getJSONObject("t2"); + } + if (apply.getIntValue("clean_days") == 3){ + chooseRate = rateConfig.getJSONObject("t3"); + } + sysRate.putAll(chooseRate); + + configNewClientRate(sysRate, clientId, "Wechat", "Wechat"); + configNewClientRate(sysRate, clientId, "Alipay", "Alipay"); + configNewClientRate(sysRate, clientId, "AlipayOnline", "AlipayOnline"); + configNewClientRate(sysRate, clientId, "Bestpay", "Bestpay"); + configNewClientRate(sysRate, clientId, "jd", "JDpay"); + } + + private String generateClientMoniker(){ + String clientMoniker = RandomStringUtils.random(4, true, true).toUpperCase(); + JSONObject client = clientMapper.findClientByMoniker(clientMoniker); + 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(); + newConfig.putAll(config); + newConfig.put("rate_value", config.getBigDecimal(rateKey)); + newConfig.put("rate_name", channel); + if (!clientRateMapper.listClientRatesForSaving(clientId, config.getDate("active_time"), config.getDate("expiry_time"), + config.getDoubleValue("rate_value"), config.getInteger("clean_days"), channel).isEmpty()) { + return; + } + List existRate = clientRateMapper.listCurrentClientRates(clientId, config.getDate("active_time"), channel); + for (JSONObject rateLog : existRate) { + rateLog.put("expiry_time", DateUtils.addDays(config.getDate("active_time"), -1)); + clientRateMapper.updateConfig(rateLog); + } + clientRateMapper.saveRate(newConfig); + } + } + + @Override + public JSONObject getBankInfo(String bsb_no) { + String url = "https://api.bank.codes/au-bsb/json/ab9379cfdab559509bbdcdd11923489f/" + bsb_no; + JSONObject banInfo = new JSONObject(); + try { + HttpRequestResult result = new HttpRequestGenerator(url, RequestMethod.GET).execute(); + if (result.isSuccess()) { + banInfo = result.getResponseContentJSONObj(); + } + } catch (URISyntaxException | IOException e) { + } + return banInfo; + } + @Override public void verifyMail(String address, JSONObject loginAccount) { LoginInfo loginInfo = new LoginInfo(); @@ -187,8 +377,8 @@ public class SimpleClientApplyServiceImpl implements SimpleClientApplyService { } - 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) { diff --git a/src/main/java/au/com/royalpay/payment/manage/application/web/SimpleClientApplyController.java b/src/main/java/au/com/royalpay/payment/manage/application/web/SimpleClientApplyController.java index e6303cea5..9a7c34cd8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/application/web/SimpleClientApplyController.java +++ b/src/main/java/au/com/royalpay/payment/manage/application/web/SimpleClientApplyController.java @@ -1,5 +1,6 @@ package au.com.royalpay.payment.manage.application.web; +import au.com.royalpay.payment.manage.application.beans.ClientPreApplyBean; import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService; import au.com.royalpay.payment.manage.merchants.beans.NewAccountBean; import au.com.royalpay.payment.tools.CommonConsts; @@ -7,25 +8,27 @@ import au.com.royalpay.payment.tools.http.HttpUtils; import com.alibaba.fastjson.JSONObject; -import org.springframework.stereotype.Controller; import org.springframework.validation.Errors; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -@Controller +@RestController @RequestMapping("/register") public class SimpleClientApplyController { @Resource private SimpleClientApplyService simpleClientApplyService; + @RequestMapping(value = "/account/{account_name}", method = RequestMethod.GET) + @ResponseBody + public void checkAccountName(@PathVariable String account_name){ + simpleClientApplyService.checkAccountName(account_name); + } + + @RequestMapping(value = "/account/{codeKey}", method = RequestMethod.POST) @ResponseBody public void registerAccount(@PathVariable String codeKey, @RequestBody @Valid NewAccountBean accountBean, Errors errors, HttpServletResponse response) @@ -56,4 +59,13 @@ public class SimpleClientApplyController { simpleClientApplyService.deleteVerifyMailKey(codeKey); } + @RequestMapping(value = "/info/update/{username}", method = RequestMethod.POST) + public void registerCompanyInfo(@PathVariable String username, @RequestBody @Valid ClientPreApplyBean applyBean) throws Exception { + simpleClientApplyService.updateApplyInfo(applyBean,username); + } + + @RequestMapping(value = "/info/bank/{bsb_no}", method = RequestMethod.GET) + public JSONObject getBankInfo(@PathVariable String bsb_no) throws Exception { + return simpleClientApplyService.getBankInfo(bsb_no); + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/preapply/SysClientPreMapperMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/preapply/SysClientPreMapperMapper.java new file mode 100644 index 000000000..8a268e2cd --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/preapply/SysClientPreMapperMapper.java @@ -0,0 +1,23 @@ +package au.com.royalpay.payment.manage.mappers.preapply; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@AutoMapper(tablename = "sys_client_pre_apply", pkName = "client_pre_apply_id") +public interface SysClientPreMapperMapper { + @AutoSql(type = SqlType.UPDATE) + void update(JSONObject data); + + @AutoSql(type = SqlType.INSERT) + void save(JSONObject data); + + @AutoSql(type = SqlType.SELECT) + JSONObject findByUserName(@Param("username") String username); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientConfigMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientConfigMapper.java index 0c6773bc3..f4d6bc33e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientConfigMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientConfigMapper.java @@ -27,4 +27,7 @@ public interface ClientConfigMapper { @AutoSql(type = SqlType.SELECT) JSONObject find(@Param("client_id") int client_id); + + @AutoSql(type = SqlType.SELECT) + List getAll(); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java index 7e5f17df0..37e3b1f03 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java @@ -74,4 +74,7 @@ public interface ClientMapper { List listSubMerchantId(); List listBySubMerchantId(@Param("sub_merchant_id") String sub_merchant_id); + + @AutoSql(type = SqlType.SELECT) + List AllClients(); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java index 844d1433a..3aa028538 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java @@ -47,4 +47,7 @@ public interface OrgMapper { PageList listOrgWithPages(JSONObject paraams, PageBounds order); List listOrgAndChild(@Param("org_id") int org_id); + + JSONObject test(@Param("client_id") int client_id); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index 00c29e2c3..827aaa9a4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -706,7 +706,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } else if (checkGreenChannel && client.getIntValue("open_status") == 5) { // 绿色通道通过后不发邮件 logger.info("PASS 绿色通道:" + clientMoniker); - saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "绿色通道申请通过", manager); + saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "合规通过", manager); } else { initAdminUserAndSendEmail(manager, clientMoniker, client); saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "合规通过", manager); @@ -1633,8 +1633,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid @Override public String getQrCodeBoard(JSONObject client, QRCodeConfig config,JSONObject account,String plantform) { // JSONObject org = orgMapper.findOne(client.getIntValue("org_id")); - return merchantInfoProvider.getQrCodeBoard(client, config); -// return merchantInfoProvider.getQrCodeBoard(client, config,account,plantform); +// return merchantInfoProvider.getQrCodeBoard(client, config); + return merchantInfoProvider.getQrCodeBoard(client, config,account,plantform); } @Override @@ -1658,8 +1658,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid qrboardConfig.put("brandw", "600"); qrboardConfig.put("brandh", "200"); String type = qrboardConfig.getString("type"); -// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform); - QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config); + QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform); +// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config); board.drawBoardImage(ous); } catch (Exception e) { throw new ServerErrorException("QR board config not set for current organize", e); @@ -1679,8 +1679,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid JSONObject qrboardConfig = JSON.parseObject(qrBoardConfigString); String type = qrboardConfig.getString("type"); -// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform); - QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config); + QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform); +// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config); board.drawBoardImage(ous); } catch (Exception e) { throw new ServerErrorException("QR board config not set for current organize", e); diff --git a/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/NoticeManageImpl.java b/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/NoticeManageImpl.java index 341611d72..84b15a597 100644 --- a/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/NoticeManageImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/NoticeManageImpl.java @@ -234,4 +234,5 @@ public class NoticeManageImpl implements NoticeManage { noticeManageMapper.updateNotice(notice); } + } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml index b23017706..273837f19 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml @@ -70,4 +70,17 @@ + + + \ No newline at end of file diff --git a/src/main/ui/merchant_application.html b/src/main/ui/merchant_application.html new file mode 100644 index 000000000..44fc174a7 --- /dev/null +++ b/src/main/ui/merchant_application.html @@ -0,0 +1,876 @@ + + + + + + + RoyalPay | Merchant Application + + + + + + + + + + + + + + + + Partner Register + + + + + + + + + + + + +
+
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + + + +
+
+
+ +
+ +
+
+
+
+ + Account Information +
+
+ + Company Information +
+
+ + Bank Account +
+
+ + Submit Materials +
+
+ + Success +
+
+
+
+ +
+
+ +
+

用户名已存在

+
+
+
+ +
+ +
+ +
+ +
+ +
+

6~12个字符,区分大小写

+
+ +
+ +
+
+
+
+ +61 + + +
+ +
+
+ +
+ +
+ +
+
+ +
+

{{resError}}

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+

{{resError}}

+
+
+
+
+
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+

{{resError}}

+
+
+
+
+
+
+ +
{{rateConfig}}
+
+ +
+
+ +
%
+
+
+ +
+
+ +
%
+
+
+ +
+
+ +
%
+
+
+
+
+ +
%
+
+
+
+
+ +
%
+
+
+
+
+ +
+
+
+
+ +
+

{{resError}}

+
+
+
+
+ +
+
+
+ +
+
+
恭喜注册成功
+
欢迎使用RoyalPay收单服务
+
+
+
+
+
注意事项:
+

1、需要完成 合规材料的提交,具体请查看appxx菜单xx功能;

+

2、在完成合规认证之前,不会对交易进行清算;

+

3、账户名和密码以及相关信息已发送至账户邮箱,请妥善保护自己的密码,及时进行修改。

+
+
+
+ +
+

{{resError}}

+
+
+
+
+
+
+
+ + + +
+ +
+
+ + +
+
+ + \ No newline at end of file diff --git a/src/main/ui/static/css/merchant_application.css b/src/main/ui/static/css/merchant_application.css new file mode 100644 index 000000000..b533aebb1 --- /dev/null +++ b/src/main/ui/static/css/merchant_application.css @@ -0,0 +1,430 @@ +body .progress_inner #step-5:checked + div + div + div + div > .box_base, body .progress_inner #step-4:checked + input + div + div + div + div > .box_base, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_base, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_base, body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div > .box_base { + top: 50%; + left: 0px; + opacity: 1; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_item, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_item, body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div > .box_item { + top: -30px; + left: 0px; + opacity: 0; +} + +body .progress_inner #step-5:checked + div + div + div + div > .box_lid, body .progress_inner #step-4:checked + input + div + div + div + div > .box_lid, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_lid { + top: -20px; + left: 0px; + opacity: 0; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_item { + top: -10px; + left: 0px; + opacity: 1; +} + +body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_item { + top: 10px; + left: 0px; + opacity: 1; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_lid, body .progress_inner #step-4:checked + input + div + div + div + div > .box_lid, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_lid { + top: -1px; + left: 0px; + opacity: 1; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_ribbon, body .progress_inner #step-4:checked + input + div + div + div + div > .box_ribbon, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_ribbon { + top: 70%; + left: 0px; + opacity: 0; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_bow, body .progress_inner #step-4:checked + input + div + div + div + div > .box_bow, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_bow { + top: 0px; + left: 0px; + opacity: 0; +} + +body .progress_inner #step-5:checked + div + div + div + div > .box_ribbon, body .progress_inner #step-4:checked + input + div + div + div + div > .box_ribbon { + top: 50%; + left: 0px; + opacity: 1; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_bow, body .progress_inner #step-4:checked + input + div + div + div + div > .box_bow { + top: -10px; + left: 0px; + opacity: 1; +} + +body .progress_inner #step-5:checked + div + div + div + div > .box_tag { + top: 10px; + left: 20px; + opacity: 1; +} +body .progress_inner #step-5:checked + div + div + div + div > .box_string { + top: 10px; + left: 20px; + opacity: 1; +} + +* { + box-sizing: border-box; +} + +body .progress_inner__step:before, body .progress_inner, body .progress_inner__status .box_base, body .progress_inner__status .box_item, body .progress_inner__status .box_ribbon, body .progress_inner__status .box_bow, body .progress_inner__status .box_bow__left, body .progress_inner__status .box_bow__right, body .progress_inner__status .box_tag, body .progress_inner__status .box_string { + position: absolute; + left: 0; + right: 0; + top:42%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + margin: auto; +} + +body .progress_inner__bar, body .progress_inner__bar--set { + height: 6px; + left: 10%; + background: -webkit-repeating-linear-gradient(45deg, #1ea4ec, #1ea4ec 4px, #1f8bc5 4px, #1f8bc5 10px); + background: repeating-linear-gradient(45deg, #1ea4ec, #1ea4ec 4px, #1f8bc5 4px, #1f8bc5 10px); + -webkit-transition: width 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + transition: width 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + border-radius: 6px; + width: 0; + position: relative; + z-index: -1; +} + +body .progress_inner__step:before { + width: 30px; + height: 30px; + color: #70afd0; + background: white; + line-height: 30px; + border: 3px solid #a6cde2; + font-size: 12px; + top: 3px; + border-radius: 100%; + -webkit-transition: all .4s; + transition: all .4s; + cursor: pointer; + pointer-events: none; +} + +body .progress_inner__step { + width: 20%; + font-size: 14px; + padding: 0 10px; + -webkit-transition: all .4s; + transition: all .4s; + float: left; + text-align: center; + position: relative; +} +body .progress_inner__step label { + padding-top: 50px; + top: -20px; + display: block; + position: relative; + cursor: pointer; +} +/*body .progress_inner__step:hover { + color: white; +} +body .progress_inner__step:hover:before { + color: white; + background: #1ea4ec; +}*/ + +body { + font-family: "Nunito", sans-serif; + background: #a6cde2; + color: #2e6c8e; + text-align: center; + font-weight: 900; +} +body .progress_inner { + height: 200px; + width: 1000px; +} +body .progress_inner #step-5:checked + div { + width: 80%; +} +body .progress_inner #step-5:checked + div + div + div > .tab:nth-of-type(5) { + opacity: 1; + top: 0; +} +body .progress_inner #step-5:checked + div + div + div + div { + right: 10%; +} +body .progress_inner #step-4:checked + input + div { + width: 60%; +} +body .progress_inner #step-4:checked + input + div + div + div > .tab:nth-of-type(4) { + opacity: 1; + top: 0; +} +body .progress_inner #step-4:checked + input + div + div + div + div { + right: 30%; +} +body .progress_inner #step-3:checked + input + input + div { + width: 40%; +} +body .progress_inner #step-3:checked + input + input + div + div + div > .tab:nth-of-type(3) { + opacity: 1; + top: 0; +} +body .progress_inner #step-3:checked + input + input + div + div + div + div { + right: 50%; +} +body .progress_inner #step-2:checked + input + input + input + div { + width: 20%; +} +body .progress_inner #step-2:checked + input + input + input + div + div + div > .tab:nth-of-type(2) { + opacity: 1; + top: 0; +} +body .progress_inner #step-2:checked + input + input + input + div + div + div + div { + right: 70%; +} +body .progress_inner #step-1:checked + input + input + input + input + div { + width: 0%; +} +body .progress_inner #step-1:checked + input + input + input + input + div + div + div > .tab:nth-of-type(1) { + opacity: 1; + top: 0; +} +body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div { + right: 90%; +} +body .progress_inner__step:nth-of-type(1):before { + content: "1"; +} +body .progress_inner__step:nth-of-type(2):before { + content: "2"; +} +body .progress_inner__step:nth-of-type(3):before { + content: "3"; +} +body .progress_inner__step:nth-of-type(4):before { + content: "4"; +} +body .progress_inner__step:nth-of-type(5):before { + content: "5"; +} +body .progress_inner__step:nth-of-type(6):before { + content: "6"; +} +body .progress_inner__bar--set { + width: 80%; + top: -6px; + background: #70afd0; + position: relative; + z-index: -2; +} +body .progress_inner__tabs .tab { + opacity: 0; + position: absolute; + top: 40px; + text-align: center; + margin-top: 80px; + box-shadow: 0px 2px 1px #80b7d5; + padding: 30px; + background: white; + border-radius: 10px; + -webkit-transition: all .2s; + transition: all .2s; +} +body .progress_inner__tabs .tab h1 { + margin: 0; +} +body .progress_inner__tabs .tab p { + font-weight: 400; + opacity: 0.8; +} +body .progress_inner__status { + width: 40px; + height: 40px; + top: -65px; + -webkit-transition: right 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + transition: right 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + -webkit-transform: translateX(50%); + transform: translateX(50%); + position: absolute; +} +body .progress_inner__status div { + opacity: 0; + -webkit-transition: all 600ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + transition: all 600ms cubic-bezier(0.915, 0.015, 0.3, 1.005); + -webkit-transition-delay: 300ms; + transition-delay: 300ms; +} +body .progress_inner__status div { + position: absolute; +} +body .progress_inner__status .box_base { + background: -webkit-repeating-linear-gradient(45deg, #986c5d, #986c5d 2px, #775144 2px, #775144 4px); + background: repeating-linear-gradient(45deg, #986c5d, #986c5d 2px, #775144 2px, #775144 4px); + width: 36px; + height: 40px; + z-index: 1; + border-radius: 1px; +} +body .progress_inner__status .box_lid { + width: 40px; + height: 13.33333px; + background: #775144; + z-index: 2; + border-radius: 1px; + top: 0; +} +body .progress_inner__status .box_item { + width: 20px; + height: 20px; + background: #be69d2; + z-index: 0; + border-radius: 4px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +body .progress_inner__status .box_ribbon { + width: 10px; + height: 42px; + background: #ee0f29; + z-index: 4; + border-radius: 1px; +} +body .progress_inner__status .box_bow__left, body .progress_inner__status .box_bow__right { + width: 6px; + height: 10px; + background: #be0c21; + position: absolute; + z-index: 3; + opacity: 1; + border-radius: 1px; +} +body .progress_inner__status .box_bow { + top: -6px; + z-index: 1; + -webkit-transition-delay: 500ms; + transition-delay: 500ms; +} +body .progress_inner__status .box_bow__left { + left: 6px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +body .progress_inner__status .box_bow__right { + left: -4px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +body .progress_inner__status .box_tag { + width: 20px; + height: 10px; + background: #487ac7; + z-index: 4; + -webkit-transform: rotate(-10deg) translateX(-40px) translateY(0px); + transform: rotate(-10deg) translateX(-40px) translateY(0px); + border-radius: 2px; + -webkit-transition-delay: 500ms; + transition-delay: 500ms; +} +body .progress_inner__status .box_string { + width: 17px; + height: 2px; + background: #343434; + z-index: 4; + -webkit-transform: rotate(-39deg) translateX(-22px) translateY(-12px); + transform: rotate(-39deg) translateX(-22px) translateY(-12px); +} +body .progress_inner input[type="radio"] { + display: none; +} +.step_header{ + text-align: left; + padding-left:7%; +} +.step_header img{ + height: 30px; + width: 30px; +} + +.success_wrapper{ + margin-top: 30px; + text-align: center; +} +.success_img{ + display: inline-block; +} +.success_img img{ + vertical-align: baseline; +} +.success_text{ + text-align: left; + display: inline-block; + margin-left: 14px; +} +.success_text2{ + font-family: PingFangSC-Regular; + font-size: 15px; + color: #8B919D; + letter-spacing: 0px; +} +.success_content{ + margin-top: 50px; + font-family: PingFangSC-Regular; + font-size: 15px; + color: #8B919D; + letter-spacing: 0px; +} +.content_align{ + margin:0 auto; + width:50%; + text-align:left; +} +.margin-bottom2{ + margin-top: 120px; +} +.agree-text{ + font-family: SanFranciscoText-Regular; + font-size: 15px; + color: #FF6600; + letter-spacing: 0px; +} +.agree-to{ + border: 1px solid #FF6600; + padding: 6px 8px 6px 8px; + color: grey; + cursor: pointer; +} +.agree_left{ + text-align: left; +} +body .dis_before{ + color: white; +} +body .dis_before:nth-child(1):before{ + color: white; + background: #1ea4ec; +} +body .dis_before:nth-child(2):before{ + color: white; + background: #1ea4ec; +} +body .dis_before:nth-child(3):before{ + color: white; + background: #1ea4ec; +} +body .dis_before:nth-child(4):before{ + color: white; + background: #1ea4ec; +} +body .dis_before:nth-child(5):before { + color: white; + background: #1ea4ec; + } +/*.progress_inner__step:before{ + background: #1ea4ec; +} +.step_submit_color{ + color: white; + +}*/ + + diff --git a/src/main/ui/static/images/step/gou.png b/src/main/ui/static/images/step/gou.png new file mode 100644 index 000000000..f4a81919a Binary files /dev/null and b/src/main/ui/static/images/step/gou.png differ diff --git a/src/main/ui/static/images/step/num1_1.png b/src/main/ui/static/images/step/num1_1.png new file mode 100644 index 000000000..e4a8e2496 Binary files /dev/null and b/src/main/ui/static/images/step/num1_1.png differ diff --git a/src/main/ui/static/images/step/num1_2.png b/src/main/ui/static/images/step/num1_2.png new file mode 100644 index 000000000..c009a6baa Binary files /dev/null and b/src/main/ui/static/images/step/num1_2.png differ diff --git a/src/main/ui/static/images/step/num1_3.png b/src/main/ui/static/images/step/num1_3.png new file mode 100644 index 000000000..93931e4be Binary files /dev/null and b/src/main/ui/static/images/step/num1_3.png differ diff --git a/src/main/ui/static/images/step/num1_4.png b/src/main/ui/static/images/step/num1_4.png new file mode 100644 index 000000000..e1b9e4028 Binary files /dev/null and b/src/main/ui/static/images/step/num1_4.png differ diff --git a/src/main/ui/static/images/step/num1_5.png b/src/main/ui/static/images/step/num1_5.png new file mode 100644 index 000000000..63524502e Binary files /dev/null and b/src/main/ui/static/images/step/num1_5.png differ diff --git a/src/main/ui/static/images/step/send_code.png b/src/main/ui/static/images/step/send_code.png new file mode 100644 index 000000000..2c2f5546d Binary files /dev/null and b/src/main/ui/static/images/step/send_code.png differ diff --git a/src/main/ui/static/merchantapplication/merchant_application.js b/src/main/ui/static/merchantapplication/merchant_application.js new file mode 100644 index 000000000..f3a6d76bd --- /dev/null +++ b/src/main/ui/static/merchantapplication/merchant_application.js @@ -0,0 +1,262 @@ +angular.module('applyPartnerApp', ['ngMessages']).controller('applyPartnerCtrl', ['$scope', '$http','$interval', function ($scope, $http,$interval) { + var countryMap = [{ + "label": "AUS", + "value": "AUS" + }, { + "label": "CHN", + "value": "CHN" + }]; + var stateMap = [ + { + "label": "ACT", + "value": "ACT" + }, + { + "label": "NSW", + "value": "NSW" + }, + { + "label": "NT", + "value": "NT" + }, + { + "label": "QLD", + "value": "QLD" + }, + { + "label": "SA", + "value": "SA" + }, + { + "label": "TAS", + "value": "TAS" + }, + { + "label": "VIC", + "value": "VIC" + }, + { + "label": "WA", + "value": "WA" + } + ]; + var industryMap = [ + { + "label": "综合商城 Integrated Store", + "value": 336 + }, + { + "label": "食品 Food", + "value": 335 + }, + { + "label": "化妆品 Cosmetics", + "value": 334 + }, + { + "label": "鞋包服饰 Clothes", + "value": 327 + }, + { + "label": "酒店行业 Hospitality industry", + "value": 328 + }, + { + "label": "数码电器 Electric appliances", + "value": 332 + }, + { + "label": "母婴 Baby and maternal products", + "value": 333 + }, + { + "label": "文具/办公用品 Office supplies", + "value": 337 + }, + { + "label": "机票行业 Airline tickets industry", + "value": 339 + }, + { + "label": "国际物流 International logistics", + "value": 330 + }, + { + "label": "教育行业 Education section", + "value": 329 + }, + { + "label": "其它服务行业 Other services industry", + "value": 331 + }, + { + "label": "其它货物贸易行业 Other goods trade industry", + "value": 338 + } + ]; + $scope.name_exist = false; + $scope.industries = angular.copy(industryMap); + $scope.states = angular.copy(stateMap); + $scope.countries = angular.copy(countryMap); + $scope.seconds = 6; + $scope.canClick=false; + $scope.description = "Send Code"; + $scope.partner = {}; + $scope.bankaccount = {}; + $scope.rate = {}; + + $scope.checkUserName = function (username) { + if(username != null && username != ''){ + $http.get('/register/account/' + $scope.partner.username).then(function (resp) { + $scope.name_exist = false; + }, function (resp) { + if (resp.data.status == 403){ + $scope.name_exist = true; + } + }) + } + }; + $scope.disabledArray = new Array(true, false, false, false, false); + $scope.chooseArray = new Array(true, false, false, false, false); + $scope.changeChoose = function (index) { + $scope.chooseArray = new Array(false, false, false, false, false); + $scope.chooseArray[index] = true; + $scope.disabledArray[index] = true; + }; + $scope.getRateConfig = function () { + $http.get('/sys/partners/sys_rates').then(function (resp) { + $scope.sysRateConfig = resp.data; + }, function (resp) { + }) + }; + $scope.sendPhoneCodeTime = function(){ + var second=59; + var timerHandler; + timerHandler =$interval(function(){ + if(second<=0){ + $interval.cancel(timerHandler); + second=59; + $scope.description="获取验证码"; + $scope.canClick=false; + }else{ + $scope.description=second+"s后重发"; + second--; + $scope.canClick=true; + } + },1000) + }; + + $scope.goToLogin = function () { + var timer = $interval(function(){ + $scope.seconds = $scope.seconds -1; + if ($scope.seconds == 0) { + location.href = '/login.html'; + } + },1000) + }; + $scope.sendVerificationCode = function (phone_number) { + $scope.sendPhoneCodeTime(); + $http.post('/register/get/code/{number}').then(function (resp) { + }, function (resp) { + $scope.resError = resp.data.message; + }); + }; + $scope.searchBankInfo = function (bsb_no) { + if (bsb_no != null && bsb_no != "") { + $http.get('/register/info/bank/' + bsb_no).then(function (resp) { + $scope.bankInfo = resp.data; + $scope.bankaccount.bank = $scope.bankInfo.bank; + $scope.bankaccount.city = $scope.bankInfo.city; + $scope.bankaccount.address = $scope.bankInfo.address; + $scope.bankaccount.system = $scope.bankInfo.system; + $scope.bankaccount.postcode = $scope.bankInfo.postcode; + $scope.bankaccount.state = $scope.bankInfo.state; + $scope.bankaccount.branch = $scope.bankInfo.branch; + }); + } else { + $scope.resError = "请先填写BSB No"; + } + }; + $scope.changeDays = function (clean_days) { + if (clean_days) { + switch (clean_days) { + case '1': { + $scope.rate.wechat_rate_value = parseFloat($scope.sysRateConfig.t1.Wechat); + $scope.rate.alipay_rate_value = parseFloat($scope.sysRateConfig.t1.Alipay); + $scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t1.AlipayOnline); + $scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t1.Bestpay); + $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t1.JDpay); + break; + } + case '2': { + $scope.rate.wechat_rate_value = parseFloat($scope.sysRateConfig.t2.Wechat); + $scope.rate.alipay_rate_value = parseFloat($scope.sysRateConfig.t2.Alipay); + $scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t2.Bestpay); + $scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t2.AlipayOnline); + $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t2.JDpay); + break; + } + case '3': { + $scope.rate.wechat_rate_value = parseFloat($scope.sysRateConfig.t3.Wechat); + $scope.rate.alipay_rate_value = parseFloat($scope.sysRateConfig.t3.Alipay); + $scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t3.Bestpay); + $scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t3.AlipayOnline); + $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t3.JDpay); + break; + } + } + } + }; + $scope.saveApplyInfo = function (form,index) { + if (form.$invalid) { + angular.forEach(form, function (item, key) { + if (key.indexOf('$') < 0) { + item.$dirty = true; + } + }); + return; + } + $http.post('/register/info/update/' + $scope.partner.username, $scope.partner).then(function (resp) { + if (index == 3) { + $scope.getRateConfig(); + } + if (index == 4) { + $scope.goToLogin(); + } + $scope.changeChoose(index); + }, function (resp) { + $scope.resError = resp.data.message; + }); + }; + + + + + + /* $scope.captchaImage = '/partners/application/captcha-image'; + $scope.changeCaptchaImage = function () { + $scope.captchaImage = '/partners/application/captcha-image?' + Math.floor(Math.random() * 100); + }; + $scope.save = function (form) { + if (form.$invalid) { + angular.forEach(form, function (item, key) { + if (key.indexOf('$') < 0) { + item.$dirty = true; + } + }); + return; + } + $scope.partner.company_name = $scope.partner.short_name; + $('#login-btn').attr('disabled', true); + $http.post('partners/application', $scope.partner).then(function (resp) { + alert("Registered merchant application has been submitted successfully"); + location.href = 'partner_register_success.html'; + //commonDialog.alert({title: 'Success', content: 'Registered merchant application has been submitted successfully', type: 'success'}); + }, function (resp) { + alert(resp.data.message); + $scope.resError = resp.data.message; + $scope.changeCaptchaImage(); + $('#login-btn').attr('disabled', false); + }); + };*/ +}]); \ No newline at end of file diff --git a/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java b/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java index 4c9146935..75473b0f3 100644 --- a/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java +++ b/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java @@ -1,6 +1,7 @@ package au.com.royalpay.payment.manage.apps.core.impls; import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; +import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.mappers.system.OrgMapper; import au.com.royalpay.payment.tools.mail.MailGunClient; @@ -9,6 +10,7 @@ import au.com.royalpay.payment.tools.mail.SendMail; import com.alibaba.fastjson.JSONObject; import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.junit.Test; import org.junit.runner.RunWith; @@ -21,8 +23,12 @@ import org.springframework.web.bind.annotation.RequestMethod; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Set; import javax.annotation.Resource; @@ -34,7 +40,7 @@ import cn.yixblog.platform.http.HttpRequestResult; * Created by wangning on 05/01/2018. */ @SpringBootTest -@ActiveProfiles({ "local", "alipay", "wechat", "jd", "bestpay" }) +@ActiveProfiles({ "proxy", "alipay", "wechat", "jd", "bestpay" }) @RunWith(SpringRunner.class) public class CustomerImpressionImplTest { @Resource @@ -48,7 +54,8 @@ public class CustomerImpressionImplTest { private OrgMapper orgMapper; @Resource private MailGunClient mailGunClient; - + @Resource + private ClientConfigMapper clientConfigMapper; // @Test // public void redisQueue() { @@ -60,40 +67,39 @@ public class CustomerImpressionImplTest { // } // } -// @Test -// public void excel() { -// try { -// XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File("/Users/wangning/Desktop/asd.xlsx"))); -// XSSFSheet sheet = workbook.getSheetAt(0); -// Iterator rowIterator = sheet.rowIterator(); -// Row row = null; -// Cell cell = null; -// while (rowIterator.hasNext()) { -// row = rowIterator.next(); -// cell = row.getCell(3); -// cell.setCellType(HSSFCell.CELL_TYPE_STRING); -// -// JSONObject client = clientMapper.findClientByMoniker(cell.getStringCellValue().trim()); -// if(client==null){ -// System.out.println(); -// continue; -// } -// JSONObject org = orgMapper.findOne(client.getIntValue("org_id")); -// if(org==null){ -// continue; -// } -// -// row.createCell(5).setCellValue(org.getString("name")); -// } -// -// OutputStream out = new FileOutputStream("/Users/wangning/Desktop/春节活动报名结果通知(包含BD名称).xlsx"); -// workbook.write(out); -// workbook.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } - + // @Test + // public void excel() { + // try { + // XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File("/Users/wangning/Desktop/asd.xlsx"))); + // XSSFSheet sheet = workbook.getSheetAt(0); + // Iterator rowIterator = sheet.rowIterator(); + // Row row = null; + // Cell cell = null; + // while (rowIterator.hasNext()) { + // row = rowIterator.next(); + // cell = row.getCell(3); + // cell.setCellType(HSSFCell.CELL_TYPE_STRING); + // + // JSONObject client = clientMapper.findClientByMoniker(cell.getStringCellValue().trim()); + // if(client==null){ + // System.out.println(); + // continue; + // } + // JSONObject org = orgMapper.findOne(client.getIntValue("org_id")); + // if(org==null){ + // continue; + // } + // + // row.createCell(5).setCellValue(org.getString("name")); + // } + // + // OutputStream out = new FileOutputStream("/Users/wangning/Desktop/春节活动报名结果通知(包含BD名称).xlsx"); + // workbook.write(out); + // workbook.close(); + // } catch (IOException e) { + // e.printStackTrace(); + // } + // } @Test public void sendSimpleMessage() throws Exception { @@ -126,7 +132,7 @@ public class CustomerImpressionImplTest { generator.addQueryString("ascending", "yes"); generator.addQueryString("v:my-custom-data", "123456789"); generator.addQueryString("limit", "12"); - System.out.println(String.valueOf(DateUtils.addDays(new Date(),1))); + System.out.println(String.valueOf(DateUtils.addDays(new Date(), 1))); HttpRequestResult res = null; try { res = generator.execute(); @@ -155,13 +161,15 @@ public class CustomerImpressionImplTest { public void sendSimpleMessages() throws Exception { SendMail sendMail = new SendMail(); sendMail.setFrom("info@mail.royalpay.com.au"); - sendMail.setContent("

Hi kira

"); + sendMail.setContent("

Hi

"); + List list = new ArrayList<>(); + list.add("testTag"); +// sendMail.setTags(list); Set mailCCs = new HashSet<>(); mailCCs.add("asd1159111@163.com"); sendMail.setMailCcs(mailCCs); Set mailtos = new HashSet<>(); mailtos.add("eason.qian@royalpay.com.au"); - mailtos.add("164851225@qq.com"); sendMail.setMailTos(mailtos); sendMail.setTitle("Final Test"); @@ -171,4 +179,43 @@ public class CustomerImpressionImplTest { System.out.println(result.toJSONString()); } + @Test + public void asd() { + JSONObject client = clientMapper.findClient(9); + JSONObject var = new JSONObject(); + var.put("client_moniker", client.getString("client_moniker")); + var.put("short_name", client.getString("short_name")); + JSONObject result = mailGunClient.addListMember(client.getString("contact_email"), "merchants@mail.royalpay.com.au", client.getString("contact_person"), + var); + } + + @Test + public void qwe() { + List clients = clientMapper.AllClients(); + List clientConfigs = clientConfigMapper.getAll(); + Map clientConfigMap = new HashMap<>(); + Map clientMap = new HashMap<>(); + clientConfigs.forEach(p -> { + clientConfigMap.put(p.getString("client_moniker"), p); + }); + clients.forEach(p -> { + clientMap.put(p.getString("client_moniker"), p); + }); + String split = "--"; + String cc = "cc:"; + String c = "c"; + clientConfigMap.values().forEach(p -> { + String clientMoniker = p.getString("client_moniker"); + JSONObject tmpClient = clientMap.get(clientMoniker); + tmpClient.keySet().forEach(o->{ + if(StringUtils.isNotEmpty(p.getString(o))){ + if(!tmpClient.getString(o).equals(p.getString(o))){ + System.out.println(clientMoniker+split+o+split+cc+p.getString(o)+split+c+tmpClient.getString(o)); + } + + } + }); + + }); + } } \ No newline at end of file