diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMWFilesMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMWFilesMapper.java new file mode 100644 index 000000000..88efbe614 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMWFilesMapper.java @@ -0,0 +1,26 @@ +package au.com.royalpay.payment.manage.mappers.system; + +import com.alibaba.fastjson.JSONObject; +import com.yixsoft.support.mybatis.autosql.annotations.AdvanceSelect; +import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper; +import com.yixsoft.support.mybatis.autosql.annotations.AutoSql; +import com.yixsoft.support.mybatis.autosql.annotations.SqlType; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by yishuqian on 06/03/2017. + */ +@AutoMapper(tablename = "sys_merchant_warrior_files", pkName = "file_id") +public interface ClientMWFilesMapper { + @AutoSql(SqlType.INSERT) + void save(JSONObject partner); + + @AutoSql(SqlType.UPDATE) + void update(JSONObject partner); + + @AutoSql(SqlType.SELECT) + @AdvanceSelect(addonWhereClause = "is_valid = 1") + List findClientFile(@Param("client_id") int clientId); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientMWAuthFilesInfo.java b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientMWAuthFilesInfo.java new file mode 100644 index 000000000..51d263c92 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientMWAuthFilesInfo.java @@ -0,0 +1,88 @@ +package au.com.royalpay.payment.manage.merchants.beans; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; + +/** + * Created by yishuqian on 07/03/2017. + */ +public class ClientMWAuthFilesInfo { + private String upay_application_form; + private String upay_agreement_file; + private String upay_offer_letter; + private String upay_driver_license; + private String upay_residence_certificate; + private String upay_risk_level; + private String upay_risk_remark; + + public JSONObject toJson(){ + return (JSONObject)JSONObject.toJSON(this); + } + + public JSONObject toRiskInfoJson() { + JSONObject params = new JSONObject(); + if (StringUtils.isNotBlank(upay_risk_level)) { + params.put("upay_risk_level", upay_risk_level); + } + if (StringUtils.isNotBlank(upay_risk_remark)) { + params.put("upay_risk_remark", upay_risk_remark); + } + return params; + } + + public String getUpay_agreement_file() { + return upay_agreement_file; + } + + public String getUpay_application_form() { + return upay_application_form; + } + + public String getUpay_driver_license() { + return upay_driver_license; + } + + public String getUpay_offer_letter() { + return upay_offer_letter; + } + + public void setUpay_agreement_file(String upay_agreement_file) { + this.upay_agreement_file = upay_agreement_file; + } + + public void setUpay_application_form(String upay_application_form) { + this.upay_application_form = upay_application_form; + } + + public String getUpay_residence_certificate() { + return upay_residence_certificate; + } + + public String getUpay_risk_level() { + return upay_risk_level; + } + + public void setUpay_driver_license(String upay_driver_license) { + this.upay_driver_license = upay_driver_license; + } + + public void setUpay_offer_letter(String upay_offer_letter) { + this.upay_offer_letter = upay_offer_letter; + } + + public void setUpay_residence_certificate(String upay_residence_certificate) { + this.upay_residence_certificate = upay_residence_certificate; + } + + public String getUpay_risk_remark() { + return upay_risk_remark; + } + + public void setUpay_risk_level(String upay_risk_level) { + this.upay_risk_level = upay_risk_level; + } + + public void setUpay_risk_remark(String upay_risk_remark) { + this.upay_risk_remark = upay_risk_remark; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java index 16e19e8e8..e78be6bb6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java @@ -255,12 +255,16 @@ public interface ClientManager { void updateClientIdInfo(String clientMoniker,JSONObject params, JSONObject manager); + void updateMWRiskInfoByClient(String clientMoniker,JSONObject params, JSONObject manager); + JSONObject getAuthFiles(JSONObject manager, String clientMoniker); JSONObject getClientViewAuthFiles(JSONObject manager, String clientMoniker); JSONObject getAllAuthFiles(JSONObject manager, String clientMoniker); + JSONObject getMWAuthFiles(JSONObject manager, String clientMoniker); + JSONObject getAllKycFiles(JSONObject manager, String clientMoniker); JSONObject getSourceAgreeFiles(JSONObject manage, String clientMoniker); @@ -273,6 +277,8 @@ public interface ClientManager { void uploadAuthFilesManager(JSONObject manager, String clientMoniker, ClientAuthFilesInfo filesInfo); + void uploadMWAuthFilesManager(JSONObject manager, String clientMoniker, ClientMWAuthFilesInfo filesInfo); + void uploadKycFiles(JSONObject manager, String clientMoniker, ClientKycFilesInfo filesInfo); List uploadKycFilesForWaitCompliance(JSONObject manager, String clientMoniker, ClientKycFilesInfo filesInfo); @@ -379,6 +385,8 @@ public interface ClientManager { void downloadComplianceZip(@PathVariable String clientMoniker, HttpServletResponse response) throws Exception; + void downloadMWComplianceZip(@PathVariable String clientMoniker, HttpServletResponse response) throws Exception; + void configMasterMerchant(JSONObject manager, String clientMoniker, String master_merchant); JSONObject getSettlementLog(JSONObject manager, String clientMoniker, TradeLogQuery query); 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 d7c650c58..9e3f7fac3 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 @@ -45,6 +45,7 @@ import au.com.royalpay.payment.manage.mappers.system.*; import au.com.royalpay.payment.manage.merchants.beans.*; import au.com.royalpay.payment.manage.merchants.core.*; import au.com.royalpay.payment.manage.merchants.entity.impls.*; +import au.com.royalpay.payment.manage.merchants.enums.UPayAuthFileEnum; import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.permission.utils.OrgCheckUtils; import au.com.royalpay.payment.manage.rservices.core.RServicesApplyService; @@ -237,6 +238,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid @Resource private ClientFilesMapper clientFilesMapper; + @Resource + private ClientMWFilesMapper clientMWAuthFilesInfo; @Resource private TransactionMapper transactionMapper; @@ -3376,6 +3379,46 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } } + @Override + public void downloadMWComplianceZip(String clientMoniker, HttpServletResponse response) throws Exception { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + List files = clientMWAuthFilesInfo.findClientFile(client.getIntValue("client_id")); + if (files != null && files.size() > 0) { + List filePaths = new ArrayList<>(); + for (JSONObject file : files) { + filePaths.add(file.getString("file_value")); + } + try { + String downloadFilename = clientMoniker + "_Compliance_Files_" + DateFormatUtils.format(new Date(), "dd/MM/yyyy HH:mm:ss").toString() + ".zip";// 文件的名称 + logger.info("正在下载合规文件=====>" + downloadFilename); + // downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码 + response.setContentType("application/octet-stream");// 指明response的返回对象是文件流 + response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名 + ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); + for (String file : filePaths) { + URL url = new URL(file); + zos.putNextEntry(new ZipEntry(file.substring(file.lastIndexOf("/")))); + InputStream fis = url.openConnection().getInputStream(); + byte[] buffer = new byte[1024]; + int r = 0; + while ((r = fis.read(buffer)) != -1) { + zos.write(buffer, 0, r); + } + fis.close(); + } + zos.flush(); + zos.close(); + logger.info("合规文件下载成功=====>" + downloadFilename); + } catch (IOException e) { + logger.error("合规文件下载失败", e); + + } + } + } + @Override public void configMasterMerchant(JSONObject manager, String clientMoniker, String master_merchant) { @@ -3540,6 +3583,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid clientApproveIdInfo(params,client); } + @Override + public void updateMWRiskInfoByClient(String clientMoniker, JSONObject params, JSONObject manager) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + int clientId = client.getIntValue("client_id"); + params.put("client_id", client.getIntValue("client_id")); + clientConfigMapper.update(params); + } + @Override public void checkTodo(JSONObject manager, List notices) { if (ManagerRole.OPERATOR.hasRole(manager.getIntValue("role"))) { @@ -3649,6 +3703,20 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return fileJson; } + @Override + public JSONObject getMWAuthFiles(JSONObject manager, String clientMoniker) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + List clientFiles = clientMWAuthFilesInfo.findClientFile(client.getIntValue("client_id")); + JSONObject fileJson = new JSONObject(); + for (JSONObject file : clientFiles) { + fileJson.put(file.getString("file_name"), file.getString("file_value")); + } + return fileJson; + } + @Override public JSONObject getAllKycFiles(JSONObject manager, String clientMoniker) { JSONObject client = getClientInfoByMoniker(clientMoniker); @@ -3790,6 +3858,25 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } } + @Override + @Transactional + public void uploadMWAuthFilesManager(JSONObject manager, String clientMoniker, ClientMWAuthFilesInfo filesInfo) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + int clientId = client.getIntValue("client_id"); + try { + updateSysMWClientFiles(manager, clientId, UPayAuthFileEnum.UPAY_APPLICATION_FORM.getFileName(), filesInfo.getUpay_application_form()); + updateSysMWClientFiles(manager, clientId, UPayAuthFileEnum.UPAY_AGREEMENT_FILE.getFileName(), filesInfo.getUpay_agreement_file()); + updateSysMWClientFiles(manager, clientId, UPayAuthFileEnum.UPAY_OFFER_LETTER.getFileName(), filesInfo.getUpay_offer_letter()); + updateSysMWClientFiles(manager, clientId, UPayAuthFileEnum.UPAY_DRIVER_LICENSE.getFileName(), filesInfo.getUpay_driver_license()); + updateSysMWClientFiles(manager, clientId, UPayAuthFileEnum.UPAY_RESIDENCE_CERTIFICATE.getFileName(), filesInfo.getUpay_residence_certificate()); + } catch (Exception e) { + logger.error("上传合规文件失败", e); + } + } + @Override @Transactional public void uploadKycFiles(JSONObject manager, String clientMoniker, ClientKycFilesInfo filesInfo) { @@ -4239,6 +4326,20 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } } + public void updateSysMWClientFiles(JSONObject manager, int clientId, String fileType, String fileValue) { + if (fileValue != null) { + JSONObject fileJson = new JSONObject(); + fileJson.put("client_id", clientId); + fileJson.put("last_update_date", new Date()); + fileJson.put("last_update_by", manager.getString("display_name")); + fileJson.put("file_name", fileType); + fileJson.put("file_value", fileValue); + fileJson.put("is_valid", 1); + clientMWAuthFilesInfo.save(fileJson); + logger.info(clientId + "的fileType文件上传成功"); + } + } + public void updateSysClientFilesWithoutRepeat(JSONObject manager, int clientId, String fileType, String fileValue) { List repetitiveFiles = clientFilesMapper.findRepetitiveFilesForDelete(clientId,fileType); if (fileValue != null) { diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/enums/UPayAuthFileEnum.java b/src/main/java/au/com/royalpay/payment/manage/merchants/enums/UPayAuthFileEnum.java new file mode 100644 index 000000000..4118df321 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/enums/UPayAuthFileEnum.java @@ -0,0 +1,28 @@ +package au.com.royalpay.payment.manage.merchants.enums; + +public enum UPayAuthFileEnum { + ALL(""), + UPAY_APPLICATION_FORM("upay_application_form"), + UPAY_AGREEMENT_FILE("upay_agreement_file"), + UPAY_OFFER_LETTER("upay_offer_letter"), + UPAY_DRIVER_LICENSE("upay_driver_license"), + UPAY_RESIDENCE_CERTIFICATE("upay_residence_certificate"); + + private final String fileName; + + public String getFileName() { + return fileName; + } + + UPayAuthFileEnum(String fileName) { + this.fileName = fileName; + } + + public String[] getFileNameArrays() { + return new String[]{UPAY_APPLICATION_FORM.getFileName(), + UPAY_AGREEMENT_FILE.getFileName(), + UPAY_OFFER_LETTER.getFileName(), + UPAY_DRIVER_LICENSE.getFileName(), + UPAY_RESIDENCE_CERTIFICATE.getFileName()}; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java index 32cec964d..8a0fa3db1 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java @@ -96,6 +96,11 @@ public class PartnerManageController { clientManager.updateClientIdInfo(clientMoniker, params, manager); } + @ManagerMapping(value = "/{clientMoniker}/mw_risk_info", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR}) + public void updateMWRiskInfoByClient(@PathVariable String clientMoniker, @RequestBody JSONObject params, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.updateMWRiskInfoByClient(clientMoniker, params, manager); + } + @ManagerMapping(value = "/{clientMoniker}/qrcode", method = RequestMethod.GET) public JSONObject getQrCodeImg(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, QRCodeConfig config) { return clientManager.getQRCode(manager, clientMoniker, config); @@ -564,6 +569,11 @@ public class PartnerManageController { return clientManager.getAllAuthFiles(manager, clientMoniker); } + @ManagerMapping(value = "/{clientMoniker}/mw_file", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.BD_USER, ManagerRole.SERVANT}) + public JSONObject getMWAuthFiles(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + return clientManager.getMWAuthFiles(manager, clientMoniker); + } + @ManagerMapping(value = "/{clientMoniker}/kycFile", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.BD_USER, ManagerRole.SERVANT}) public JSONObject getKycFiles(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { return clientManager.getAllKycFiles(manager, clientMoniker); @@ -585,6 +595,12 @@ public class PartnerManageController { clientManager.uploadAuthFilesManager(manager, clientMoniker, filesInfo); } + @ManagerMapping(value = "/{clientMoniker}/mw_file", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.BD_USER}) + public void uploadMWAuthFiles(@PathVariable String clientMoniker, @RequestBody ClientMWAuthFilesInfo filesInfo, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.uploadMWAuthFilesManager(manager, clientMoniker, filesInfo); + } + @ManagerMapping(value = "/{clientMoniker}/kycFile", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.BD_USER}) public void uploadKycFiles(@PathVariable String clientMoniker, @RequestBody ClientKycFilesInfo filesInfo, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { @@ -647,6 +663,11 @@ public class PartnerManageController { clientManager.downloadComplianceZip(clientMoniker, response); } + @ManagerMapping(value = "/{clientMoniker}/download/MWcomplianceAsZIP", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR}) + public void downloadMWComplianceZip(@PathVariable String clientMoniker, HttpServletResponse response) throws Exception { + clientManager.downloadMWComplianceZip(clientMoniker, response); + } + @ManagerMapping(value = "/{clientMoniker}/master_configuration", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR}) public void configMasterMerchant(@PathVariable String clientMoniker, @RequestBody JSONObject merchant, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { clientManager.configMasterMerchant(manager, clientMoniker, merchant.getString("master_merchant")); diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java index 2fce91187..1377d2723 100644 --- a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java +++ b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java @@ -28,10 +28,9 @@ public class OrgInfo { private Double wechat_rate_value; private Double bestpay_rate_value; private Double alipayonline_rate_value; - private Double jd_rate_value; - private Double hf_rate_value; - private Double yeepay_rate_value; private Double cb_bankpay_rate_value; + private Double rpaypmt_card_rate_value; + private Double rpaypmt_dd_rate_value; private int is_valid; private String search_text; private int page = 1; @@ -41,12 +40,10 @@ public class OrgInfo { private String commission_type; private Double min_wechat_rate; private Double min_alipay_rate; - private Double min_bestpay_rate; - private Double min_jd_rate; private Double min_alipayonline_rate; - private Double min_hf_rate; - private Double min_yeepay_rate; private Double min_cb_bankpay_rate; + private Double min_rpaypmt_card_rate; + private Double min_rpaypmt_dd_rate; private String state; private String senior_parent_org_id; @@ -201,14 +198,6 @@ public class OrgInfo { this.alipayonline_rate_value = alipayonline_rate_value; } - public Double getJd_rate_value() { - return jd_rate_value; - } - - public void setJd_rate_value(Double jd_rate_value) { - this.jd_rate_value = jd_rate_value; - } - public String getSearch_text() { return search_text; } @@ -273,22 +262,6 @@ public class OrgInfo { this.min_alipay_rate = min_alipay_rate; } - public Double getMin_bestpay_rate() { - return min_bestpay_rate; - } - - public void setMin_bestpay_rate(Double min_bestpay_rate) { - this.min_bestpay_rate = min_bestpay_rate; - } - - public Double getMin_jd_rate() { - return min_jd_rate; - } - - public void setMin_jd_rate(Double min_jd_rate) { - this.min_jd_rate = min_jd_rate; - } - public Double getMin_alipayonline_rate() { return min_alipayonline_rate; } @@ -297,22 +270,6 @@ public class OrgInfo { this.min_alipayonline_rate = min_alipayonline_rate; } - public Double getHf_rate_value() { - return hf_rate_value; - } - - public void setHf_rate_value(Double hf_rate_value) { - this.hf_rate_value = hf_rate_value; - } - - public Double getMin_hf_rate() { - return min_hf_rate; - } - - public void setMin_hf_rate(Double min_hf_rate) { - this.min_hf_rate = min_hf_rate; - } - public String getState() { return state; } @@ -328,22 +285,6 @@ public class OrgInfo { this.senior_parent_org_id = senior_parent_org_id; } - public Double getYeepay_rate_value() { - return yeepay_rate_value; - } - - public void setYeepay_rate_value(Double yeepay_rate_value) { - this.yeepay_rate_value = yeepay_rate_value; - } - - public Double getMin_yeepay_rate() { - return min_yeepay_rate; - } - - public void setMin_yeepay_rate(Double min_yeepay_rate) { - this.min_yeepay_rate = min_yeepay_rate; - } - public Double getCb_bankpay_rate_value() { return cb_bankpay_rate_value; } @@ -360,4 +301,35 @@ public class OrgInfo { this.min_cb_bankpay_rate = min_cb_bankpay_rate; } + public Double getRpaypmt_card_rate_value() { + return rpaypmt_card_rate_value; + } + + public Double getRpaypmt_dd_rate_value() { + return rpaypmt_dd_rate_value; + } + + public void setRpaypmt_card_rate_value(Double rpaypmt_card_rate_value) { + this.rpaypmt_card_rate_value = rpaypmt_card_rate_value; + } + + public void setRpaypmt_dd_rate_value(Double rpaypmt_dd_rate_value) { + this.rpaypmt_dd_rate_value = rpaypmt_dd_rate_value; + } + + public Double getMin_rpaypmt_card_rate() { + return min_rpaypmt_card_rate; + } + + public Double getMin_rpaypmt_dd_rate() { + return min_rpaypmt_dd_rate; + } + + public void setMin_rpaypmt_card_rate(Double min_rpaypmt_card_rate) { + this.min_rpaypmt_card_rate = min_rpaypmt_card_rate; + } + + public void setMin_rpaypmt_dd_rate(Double min_rpaypmt_dd_rate) { + this.min_rpaypmt_dd_rate = min_rpaypmt_dd_rate; + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index eefc48e24..3beef053f 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,15 +1,15 @@ spring: datasource: master: - host: 192.168.0.4:3306 + host: 192.168.0.84:3306 jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false - password: taylor - schema-name: royalpay_production - username: taylor + password: rpayplus + schema-name: royalpay + username: root slave: - host: 192.168.0.4:3306 + host: 192.168.0.84:3306 jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false - password: taylor - schema-name: royalpay_production - username: taylor + password: rpayplus + schema-name: royalpay + username: root type: com.zaxxer.hikari.HikariDataSource diff --git a/src/main/ui/static/config/organizations/templates/new_org.html b/src/main/ui/static/config/organizations/templates/new_org.html index 023fb7319..426e5f32c 100644 --- a/src/main/ui/static/config/organizations/templates/new_org.html +++ b/src/main/ui/static/config/organizations/templates/new_org.html @@ -124,7 +124,7 @@
+ id="alipay_rate_value_input" name="alipay_rate_value" max="100" min="0" required> %
@@ -136,32 +136,7 @@
- % -
-
- - -
- -
-
- - % -
-
-
- -
- -
-
- + id="wechat_rate_value_input" name="wechat_rate_value" max="100" min="0" required> %
@@ -174,35 +149,11 @@
+ max="100" min="0" required> %
- -
@@ -210,107 +161,104 @@
+ max="100" min="0" required> %
- - -
- + ng-class="{'has-error':org_form.rpaypmt_card_rate_value.$invalid && org_form.rpaypmt_card_rate_value.$dirty}"> +
- + %
- + ng-class="{'has-error':org_form.rpaypmt_dd_rate_value.$invalid && org_form.rpaypmt_dd_rate_value.$dirty}"> +
- + %
+
+
- + ng-class="{'has-error':org_form.min_wechat_rate.$invalid && org_form.min_wechat_rate.$dirty}"> +
- + %
-
- + ng-class="{'has-error':org_form.min_alipay_rate.$invalid && org_form.min_alipay_rate.$dirty}"> +
- + %
-
- +
+ min="0"> %
- - +
- + ng-class="{'has-error':org_form.min_rpaypmt_dd_rate.$invalid && org_form.min_rpaypmt_dd_rate.$dirty}"> +
- + %
diff --git a/src/main/ui/static/config/organizations/templates/org_detail.html b/src/main/ui/static/config/organizations/templates/org_detail.html index af53d7d00..c0f17829d 100644 --- a/src/main/ui/static/config/organizations/templates/org_detail.html +++ b/src/main/ui/static/config/organizations/templates/org_detail.html @@ -113,34 +113,18 @@
-
- -
- - % -
-
-
- + %
-
- -
- - % -
-
- -
- +
+
- + %
@@ -148,28 +132,28 @@
- + %
- -
- +
+
+
- + %
@@ -179,7 +163,7 @@
- +
@@ -188,7 +172,7 @@
- +
@@ -196,104 +180,46 @@
-
- -
- - % -
-
- -
- -
- - % -
-
-
- +
%
- +
+
- + ng-class="{'has-error':org_form.min_rpaypmt_dd_rate.$invalid && org_form.min_rpaypmt_dd_rate.$dirty}"> +
- + %
- - -
@@ -766,12 +692,6 @@ - - - - - - {{clientExtracts.channel}} diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index 7d3fdc401..d0394b4a5 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -167,6 +167,15 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter return $http.get('/sys/partners/' + $stateParams.clientMoniker + '/file'); }] } + }).state('partners.detail.MW_files', { + url: '/mw_files', + templateUrl: '/static/payment/partner/templates/partner_mw_auth_files.html', + controller: 'partnerMWAuthFileCtrl', + resolve: { + file: ['$http', '$stateParams', function ($http, $stateParams) { + return $http.get('/sys/partners/' + $stateParams.clientMoniker + '/mw_file'); + }] + } }).state('partners.detail.kyc_files', { url: '/kyc_files', templateUrl: '/static/payment/kyc/templates/partner_kyc_files.html', @@ -4378,6 +4387,253 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }]); + app.controller('partnerMWAuthFileCtrl', ['$scope', '$http', '$rootScope', 'commonDialog', '$state', 'Upload', 'file', function ($scope, $http, $rootScope, commonDialog, $state, Upload, file) { + $scope.id_info_form = {edit: false}; + $scope.file = file.data || {}; + $scope.file.upay_risk_level = $scope.partner.upay_risk_level; + $scope.file.upay_risk_remark = $scope.partner.upay_risk_remark; + $scope.uploadApplyFile = function (file) { + if (file != null) { + if (file.size > 3 * 1024 * 1024) { + commonDialog.alert({title: 'Error', content: '文件大小不能超过3MB,请压缩后重试', type: 'error'}) + } else { + $scope.bankFileProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.bankFileProgress; + $scope.file.upay_application_form = resp.data.url; + $scope.updateFile(); + if ($scope.file.upay_application_form.endsWith('pdf')) { + $scope.bankIsImage = false; + } else { + $scope.bankIsImage = true; + } + }, function (resp) { + delete $scope.bankFileProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.bankFileProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + } + }; + $scope.agreeIsImage = true; + if ($scope.file.file_agreement_info && $scope.file.file_agreement_info.endsWith('pdf')) { + $scope.agreeIsImage = false; + } + $scope.bankIsImage = true; + if ($scope.file.upay_application_form && $scope.file.upay_application_form.endsWith('pdf')) { + $scope.bankIsImage = false; + } + $scope.companyIsImage = true; + if ($scope.file.file_company_info && $scope.file.file_company_info.endsWith('pdf')) { + $scope.companyIsImage = false; + } + $scope.applyIsImage = true; + if ($scope.file.file_apply_info && $scope.file.file_apply_info.endsWith('pdf')) { + $scope.applyIsImage = false; + } + $scope.idIsImage = true; + if ($scope.file.file_id_info && $scope.file.file_id_info.endsWith('pdf')) { + $scope.idIsImage = false; + } + + $scope.uploadAgreementFile = function (file) { + if (file != null) { + if (file.size > 3 * 1024 * 1024) { + commonDialog.alert({title: 'Error', content: '文件大小不能超过3MB,请压缩后重试', type: 'error'}) + } else { + $scope.companyFileProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.companyFileProgress; + $scope.file.upay_agreement_file = resp.data.url; + $scope.updateFile(); + if ($scope.file.upay_agreement_file.endsWith('pdf')) { + $scope.companyIsImage = false; + } else { + $scope.companyIsImage = true; + } + }, function (resp) { + delete $scope.companyFileProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.companyFileProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + } + }; + $scope.uploadOfferFile = function (file) { + if (file != null) { + if (file.size > 3 * 1024 * 1024) { + commonDialog.alert({title: 'Error', content: '文件大小不能超过3MB,请压缩后重试', type: 'error'}) + } else { + $scope.idFileProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.idFileProgress; + $scope.file.upay_offer_letter = resp.data.url; + $scope.updateFile(); + if ($scope.file.upay_offer_letter.endsWith('pdf')) { + $scope.idIsImage = false; + } else { + $scope.idIsImage = true; + } + }, function (resp) { + delete $scope.idFileProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.idFileProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + } + }; + $scope.uploadDriverFile = function (file) { + if (file != null) { + if (file.size > 10 * 1024 * 1024) { + commonDialog.alert({title: 'Error', content: '文件大小不能超过10MB,请压缩后重试', type: 'error'}) + } else { + $scope.agreementFileProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.agreementFileProgress; + $scope.file.upay_driver_license = resp.data.url; + $scope.updateFile(); + if ($scope.file.upay_driver_license.endsWith('pdf')) { + $scope.agreeIsImage = false; + } else { + $scope.agreeIsImage = true; + } + }, function (resp) { + delete $scope.agreementFileProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.agreementFileProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + } + }; + $scope.uploadResidenceFile = function (file) { + if (file != null) { + if (file.size > 3 * 1024 * 1024) { + commonDialog.alert({title: 'Error', content: '文件大小不能超过3MB,请压缩后重试', type: 'error'}) + } else { + $scope.applyFileProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.applyFileProgress; + $scope.file.upay_residence_certificate = resp.data.url; + $scope.updateFile(); + if ($scope.file.upay_residence_certificate.endsWith('pdf')) { + $scope.applyIsImage = false; + } else { + $scope.applyIsImage = true; + } + }, function (resp) { + delete $scope.applyFileProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.applyFileProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + + } + } + }; + $scope.saveIdInfo = function () { + if (!$scope.file.upay_risk_level) { + commonDialog.alert({title: 'Error', content: '请选择商户风险等级', type: 'error'}); + return; + } + var config = {}; + config.upay_risk_level = $scope.file.upay_risk_level; + config.upay_risk_remark = $scope.file.upay_risk_remark; + $http.put('/sys/partners/' + $scope.partner.client_moniker + '/mw_risk_info', config).then(function (resp) { + commonDialog.alert({title: 'Success', content: 'Risk Info Updated', type: 'success'}) + $state.reload(); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) + $state.reload(); + }); + }; + + $scope.cancelIdInfo = function () { + $state.reload(); + $scope.id_info_form.edit=false + }; + + $scope.downloadAsZip = function () { + var url = '/sys/partners/' + $scope.partner.client_moniker + '/download/MWcomplianceAsZIP'; + return url; + }; + + + $scope.deleteComplianceFiles = function (file_id) { + commonDialog.confirm({ + title: 'Warning', + content: 'This operation will delete the file, Are you sure?' + }).then(function () { + $http.put('/sys/partners/auth_file/' + file_id + '/delete').then(function (resp) { + commonDialog.alert({ + title: 'Success', + content: 'Delete Successful', + type: 'success' + }); + $state.reload(); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + }) + }) + }; + + + $scope.updateFile = function () { + $http.put('/sys/partners/' + $scope.partner.client_moniker + '/mw_file', $scope.file).then(function () { + commonDialog.alert({ + title: 'Success', + content: 'Upload Successful', + type: 'success' + }); + $state.reload(); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + }) + } + + function commitError() { + commonDialog.alert({ + title: 'Error', + content: 'Missing file', + type: 'error' + }); + }; + $scope.complianceCheck = function () { + if (!$rootScope.complianceCheck) { + $rootScope.complianceCheck = {}; + } + $rootScope.complianceCheck.client_id = $scope.partner.client_id; + $rootScope.complianceCheck.authFile = true; + }; + $scope.complianceChangeCheck = function () { + if ($rootScope.complianceCheck) { + if ($scope.partner.client_id != $rootScope.complianceCheck.client_id) { + delete $rootScope.complianceCheck; + } + } + }; + $scope.complianceChangeCheck(); + + }]); + app.controller('partnerKycFileCtrl', ['$scope', '$http', '$rootScope', 'commonDialog', '$state', 'Upload', 'file', function ($scope, $http, $rootScope, commonDialog, $state, Upload, file) { $scope.file = file.data || {}; diff --git a/src/main/ui/static/payment/partner/templates/partner_detail.html b/src/main/ui/static/payment/partner/templates/partner_detail.html index 934bdd78c..220dc763a 100644 --- a/src/main/ui/static/payment/partner/templates/partner_detail.html +++ b/src/main/ui/static/payment/partner/templates/partner_detail.html @@ -277,6 +277,9 @@
  • Compliance Files
  • +
  • + Merchant Warrior Compliance Files +
  • diff --git a/src/main/ui/static/payment/partner/templates/partner_mw_auth_files.html b/src/main/ui/static/payment/partner/templates/partner_mw_auth_files.html new file mode 100644 index 000000000..079916613 --- /dev/null +++ b/src/main/ui/static/payment/partner/templates/partner_mw_auth_files.html @@ -0,0 +1,194 @@ + +
    +
    Audit Files     + + 一键下载 + +
    +
    +
    +
    +

    + Merchant Warrior商户风险评级 + + +

    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + 低风险 + 中风险 + 高风险 +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + + + +
    + + + + + + + +
    + + +
    +
    +
    + +
    + +
    +
    + + + +
    + + + + + + +
    + + +
    +
    +
    + +
    + +
    +
    + + + +
    + + + + + +
    + + +
    +
    +
    + +
    +
    + +
    +
    + + + +
    + + + + + + +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    + + + +
    + + + + + + +
    + + +
    +
    +
    +
    +
    +
    +