diff --git a/src/document/cn/apis.js b/src/document/cn/apis.js index bec207b8a..5642c6f87 100644 --- a/src/document/cn/apis.js +++ b/src/document/cn/apis.js @@ -106,60 +106,7 @@ * @apiError (ERROR_CODE) ORDER_NOT_EXIST 订单不存在 * @apiError (ERROR_CODE) ORDER_MISMATCH 订单号与商户不匹配 */ -/** - * @api {PUT} /api/v1.0/h5_payment/partners/{partner_code}/orders/{order_id} 创建H5支付单 - * @apiName NewMobileH5Pay - * @apiGroup MobileH5 - * @apiVersion 1.0.0 - * @apiDescription - * 注意:微信H5支付接口必须单独申请,腾讯批复后方可使用,有需要的商户请联系RoyalPay客服,支付宝无此限制
- * H5支付适用场景为移动端App或者手机自带浏览器进行支付,用户下单后浏览器跳转至微信支付页面并自动拉起微信/支付宝客户端完成支付。
- * 返回值包括跳转支付地址,跳转支付页需要带上签名信息。 - * 货币类型如果是CNY,注意通过汇率转换后不得低于0.01AUD,否则订单可以创建成功,但支付时会报金额不合法错误
- * - * @apiHeader Accept application/json - * @apiHeader Content-Type application/json - * @apiParam (PathVariable) {String} partner_code 必填,商户编码,由4位大写字母或数字构成 - * @apiParam (PathVariable) {String} order_id 必填,商户支付订单号,要求同一商户唯一 - * @apiUse Sign - * @apiParam (JSON) {String} description 必填,订单标题(最大长度128字符,超出自动截取) - * @apiParam (JSON) {int} price 必填,金额,单位为货币最小单位,例如使用100表示AUD1.00 - * @apiParam (JSON) {String=AUD,CNY} currency=AUD 币种代码 - * @apiParam (JSON) {String=Alipay,Wechat} channel 支付渠道,大小写敏感 - * @apiParam (JSON) {String} notify_url 支付通知url,详见支付通知api,不填则不会推送支付通知 - * @apiParam (JSON) {String} operator 操作人员标识 - * - * @apiSuccess {String} return_code 执行结果 - * @apiSuccess {String} result_code SUCCESS表示创建订单成功,EXISTS表示订单已存在 - * @apiSuccess {String} partner_code 商户编码 - * @apiSuccess {String} channel 支付渠道 - * @apiSuccess {String} full_name 商户注册全名 - * @apiSuccess {String} partner_name 商户名称 - * @apiSuccess {String} order_id RoyalPay订单ID,同时也是微信订单ID,最终支付成功的订单ID可能不同 - * @apiSuccess {String} partner_order_id 商户订单ID - * @apiSuccess {String} pay_url 跳转URL - * - * @apiUse GlobalError - * @apiError (ERROR_CODE) ORDER_MISMATCH 订单号与商户不匹配 - * @apiError (ERROR_CODE) ORDER_PAID 订单已支付 - * - */ -/** - * @api {GET} /api/v1.0/h5_payment/partners/{partner_code}/orders/{order_id}/pay H5支付跳转页 - * @apiName MobileH5Pay - * @apiDescription 必须先调用创建H5支付订单接口再进行跳转。 - * 建议在用户回调到对应页时通过后台查询订单状态接口确认订单的支付状态。 - * @apiVersion 1.0.0 - * @apiGroup MobileH5 - * @apiParam (PathVariable) {String} partner_code 必填,商户编码,由4位大写字母或数字构成 - * @apiParam (PathVariable) {String} order_id 必填,商户支付订单号,要求已预先创建 - * @apiUse Sign - * @apiParam (QueryParam) {String} redirect 必填,支付成功后跳转页面,回调时会带上签名参数用于校验 - * - * @apiUse GlobalError - * @apiError (ERROR_CODE) ORDER_NOT_EXIST 订单不存在 - * @apiError (ERROR_CODE) ORDER_MISMATCH 订单号与商户不匹配 - */ + /** * @api {PUT} /api/v1.0/jsapi_gateway/partners/{partner_code}/orders/{order_id} 创建JSAPI订单 diff --git a/src/document/en/apis.js b/src/document/en/apis.js index a09a8949e..7abb83c7d 100644 --- a/src/document/en/apis.js +++ b/src/document/en/apis.js @@ -109,62 +109,7 @@ * @apiError (ERROR_CODE) ORDER_NOT_EXIST Order does not exist * @apiError (ERROR_CODE) ORDER_MISMATCH Order is not belong to this partner */ -/** - * @api {PUT} /api/v1.0/h5_payment/partners/{partner_code}/orders/{order_id} Create H5 Payment - * @apiName NewMobileH5Pay - * @apiGroup MobileH5 - * @apiVersion 1.0.0 - * @apiDescription - * Warning:H5 Payment socket requires application separately and requires agreement from Tencent. Merchants who needs this socket please contact RoyalPay first. - * Alipay has no limit at the moment.
- * H5 Payment is used for payment in Webpage or App on mobile outside WeChat or Alipay App. The browser would redirect to a webpage from WeChat or Alipay and call the App to finish the payment.
- * Return value contains a payment page. Partners shall guide users to redirect to this page. Sign params are required. - * If the currency is CNY, equivalent AUD amount shall never less than 0.01AUD, - * otherwise user will get Invalid Amount Error from WeChat when making the payment.
- * - * @apiHeader Accept application/json - * @apiHeader Content-Type application/json - * @apiParam (PathVariable) {String} partner_code Required, Partner code - * @apiParam (PathVariable) {String} order_id Required, Partner order id - * @apiUse Sign - * @apiParam (JSON) {String} description Required, Order description - * @apiParam (JSON) {int} price Required, Price of the order. Use the base unit of the currency. - * @apiParam (JSON) {String=AUD,CNY} currency=AUD currency - * @apiParam (JSON) {String=Alipay,Wechat} channel Payment channel, case sensitive - * @apiParam (JSON) {String} notify_url System will call the notify url if provided when the payment succeeds - * @apiParam (JSON) {String} operator Note for the operator who created this order. - * - * @apiSuccess {String} return_code Execution result - * @apiSuccess {String} result_code SUCCESS means order created successfully, EXISTS means order has already existed. - * @apiSuccess {String} partner_code Partner code - * @apiSuccess {String} channel Payment channel - * @apiSuccess {String} full_name Partner's full company name when registered - * @apiSuccess {String} partner_name Partner's name - * @apiSuccess {String} order_id Order id in RoyalPay, which is also WeChat order id. - * @apiSuccess {String} partner_order_id Partner order id - * @apiSuccess {String} pay_url Payment page in RoyalPay. - * - * @apiUse GlobalError - * @apiError (ERROR_CODE) ORDER_MISMATCH Order is not belong to this partner - * @apiError (ERROR_CODE) ORDER_PAID Order has already been paid - * - */ -/** - * @api {GET} /api/v1.0/h5_payment/partners/{partner_code}/orders/{order_id}/pay H5 Payment Page - * @apiName MobileH5Pay - * @apiDescription This page mush be called after payment order has been created. - * When jumping back to redirection URL, it is recommended to call the order query API to make sure the payment has succeeded. - * @apiVersion 1.0.0 - * @apiGroup MobileH5 - * @apiParam (PathVariable) {String} partner_code Required, Partner code - * @apiParam (PathVariable) {String} order_id Required, Partner order id. It shall have already been created - * @apiUse Sign - * @apiParam (QueryParam) {String} redirect Required, Redirect url when payment succeeded. Contain sign parameters for validation. - * - * @apiUse GlobalError - * @apiError (ERROR_CODE) ORDER_NOT_EXIST Order does not exist - * @apiError (ERROR_CODE) ORDER_MISMATCH Order is not belong to this partner - */ + /** * @api {PUT} /api/v1.0/jsapi_gateway/partners/{partner_code}/orders/{order_id} Create JSAPI Payment Order diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/beans/AnalysisBean.java b/src/main/java/au/com/royalpay/payment/manage/analysis/beans/AnalysisBean.java index dc67aed73..65edd513b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/beans/AnalysisBean.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/beans/AnalysisBean.java @@ -62,7 +62,7 @@ public class AnalysisBean { if (bd_id != null){ params.put("bd_id",bd_id); } - if (org_id !=null){ + if (org_id != null){ params.put("org_id",org_id); } if (begin_month != null){ @@ -71,25 +71,25 @@ public class AnalysisBean { if (end_month != null){ params.put("end_month",end_month); } - if (customer_id!=null && !customer_id.isEmpty()){ - params.put("customer_id",customer_id.trim()); + if (customer_id != null && !customer_id.isEmpty()){ + params.put("customer_id", customer_id.trim()); } - if (rankType!=null){ - params.put("rankType",rankType); + if (rankType != null){ + params.put("rankType", rankType); } - if(channel!=null){ - params.put("channel",channel); + if(channel != null){ + params.put("channel", channel); } - if(bd_name!=null){ - params.put("bd_name",bd_name); + if(bd_name != null){ + params.put("bd_name", bd_name); } - if (client_moniker!=null){ + if (client_moniker != null){ params.put("client_moniker", client_moniker); } - if (amount_from!=null && amount_from.length()>0){ + if (amount_from != null && amount_from.length() > 0){ params.put("amount_from", new BigDecimal(amount_from)); } - if (amount_to!=null && amount_to.length()>0){ + if (amount_to != null && amount_to.length() > 0){ params.put("amount_to", new BigDecimal(amount_to)); } return params; diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/DashboardService.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/DashboardService.java index eb071d334..5501d2c26 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/DashboardService.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/DashboardService.java @@ -24,7 +24,7 @@ public interface DashboardService { List getTopTradePartners(JSONObject params, int limit); - List getTopTradePartners(JSONObject params); + List getTopTradePartnersNew(JSONObject params); List getTradeAnalysisInHours(JSONObject params); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/PlatformClearService.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/PlatformClearService.java index a6444e4af..21049cd1f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/PlatformClearService.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/PlatformClearService.java @@ -14,5 +14,7 @@ public interface PlatformClearService { void generateSettleLogs(); + void generateAliPaySettleLogs(); + void doVerifyHFSettleLog(JSONObject param); } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java index 1b3f2b439..5ad52e954 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java @@ -40,7 +40,7 @@ public class ChannelsAnalysisServiceImpl implements ChannelsAnalysisService { } List list = new ArrayList<>(); Map analysisMap = new TreeMap<>(); - String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline","hf"}; + String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline","hf", "Rpay"}; for (String channel:channels){ analysisChannelCustomers(params, analysisMap, channel); } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/CustomersAnalysisServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/CustomersAnalysisServiceImp.java index 62d967da8..88e26c0d1 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/CustomersAnalysisServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/CustomersAnalysisServiceImp.java @@ -78,6 +78,7 @@ public class CustomersAnalysisServiceImp implements CustomersAnalysisService { PageList logs = orderAnalysisMapper.listCustomersData(params, new PageBounds(page, limit, Order.formString("amount.desc"))); JSONObject result = PageListUtils.buildPageListResult(logs); result.put("analysis", orderAnalysisMapper.listCustomersDataAnalysis(params)); + result.put("openid_type", params.getIntValue("openid_type")); return result; } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java index 75cff47fa..c63347edc 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java @@ -102,7 +102,10 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT } JSONObject res = new JSONObject(); res.put("new_partners", clientAnalysisMapper.countNewClients(params)); - res.put("total_partners", clientAnalysisMapper.countClients(params)); + + //res.put("total_partners", clientAnalysisMapper.countClients(params)); + // 统计所有的商户,包括禁用的 + res.put("total_partners", clientAnalysisMapper.countClientsAll(params)); stringRedisTemplate.boundValueOps("org_commonAnalysis3"+params.getString("org_id")+params.getString("begin")).set(res.toJSONString(), 5, TimeUnit.MINUTES); return res; } @@ -145,7 +148,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT return commonAnalysis4; } JSONObject res = new JSONObject(); - List topOrders = transactionAnalysisMapper.getTopOrders(params, new PageBounds(1, 1, Order.formString("aud_fee.desc"))); + List topOrders = transactionAnalysisMapper.getTopOrders(params); if (!topOrders.isEmpty()) { res.put("top_amount_order", topOrders.get(0)); } @@ -158,18 +161,18 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT return transactionAnalysisMapper.getTradeAmountInTypes(params); } + @Override public List getTopTradePartners(JSONObject params, int limit) { - return clientAnalysisMapper.listPartnersTradeAmount(params, new PageBounds(1, limit, Order.formString("aud_fee.desc"))); + return clientAnalysisMapper.listPartnersTradeAmount(params, + new PageBounds(1, limit, Order.formString("aud_fee.desc"))); } + @Override - public List getTopTradePartners(JSONObject params) { - String rankType = "aud_fee"; - if (params.getString("rankType")!=null){ - rankType = params.getString("rankType"); - } - return clientAnalysisMapper.listPartnersTradeAmount(params, new PageBounds(Order.formString(rankType+".desc"))); + public List getTopTradePartnersNew(JSONObject params) { + params.putIfAbsent("rankType", "aud_fee"); + return clientAnalysisMapper.listPartnersTradeAmountNew(params); } @Override @@ -553,7 +556,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT } } private JSONObject getTodayChannelCount(JSONObject params){ - String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline","hf"}; + String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline","hf", "Rpay"}; JSONObject resp = new JSONObject(); for(String channel:channels) { params.put("channel", channel); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PlatformClearAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PlatformClearAnalysisServiceImpl.java index 9e9064a3e..83a03f191 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PlatformClearAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PlatformClearAnalysisServiceImpl.java @@ -127,6 +127,13 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService { generateAlipayOnlineSettleLogs(); } + @Override + @Transactional + public void generateAliPaySettleLogs() { + generateAlipaySettleLogs(); + generateAlipayOnlineSettleLogs(); + } + @Transactional public void generateWechatSettleLogs() { try { @@ -138,7 +145,7 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService { } } - public void generateAlipaySettleLogs() { + private void generateAlipaySettleLogs() { try { List dateList = TimeZoneUtils.getStatetime(); for (Date dateStr : dateList) { @@ -154,7 +161,7 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService { } - public void generateAlipayOnlineSettleLogs() { + private void generateAlipayOnlineSettleLogs() { try { List dateList = TimeZoneUtils.getStatetime(); for (Date dateStr : dateList) { diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.java index e74edaa7b..13c421880 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.java @@ -22,6 +22,9 @@ public interface ClientAnalysisMapper { int countClients(JSONObject params); + // 统计所有的商户,包括禁用的 + int countClientsAll(JSONObject params); + @AutoSql(type = SqlType.COUNT) @AdvanceSelect(addonWhereClause = "sub_merchant_id is not null") int countTotalPartners(); @@ -30,6 +33,8 @@ public interface ClientAnalysisMapper { List countTradePartnersHistory(JSONObject params); + List listPartnersTradeAmountNew(JSONObject params); + List listPartnersTradeAmount(JSONObject params, PageBounds pageBounds); List countClientsTypes(JSONObject params); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java index c28d1b8b2..d9986be29 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java @@ -33,7 +33,7 @@ public interface TransactionAnalysisMapper { JSONObject getEarliestOrder(@Param("client_id") int client_id); - List getTopOrders(JSONObject params, PageBounds pagination); + List getTopOrders(JSONObject params); List getTradeAmountInTypes(JSONObject params); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/web/DashboardController.java b/src/main/java/au/com/royalpay/payment/manage/analysis/web/DashboardController.java index 86cb29a46..9035b0485 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/web/DashboardController.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/web/DashboardController.java @@ -67,22 +67,24 @@ public class DashboardController { @ManagerMapping("/top_trade_partners") public List topTradePartners(AnalysisBean analysis, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @RequestParam(defaultValue = "10") int limit) { + JSONObject params = analysis.toParams(analysis.getTimezone()); - orgManager.checkOrg(manager,params); - return dashboardService.getTopTradePartners(params, limit); + orgManager.checkOrg(manager, params); + params.put("limit", limit); + return dashboardService.getTopTradePartnersNew(params); } @ManagerMapping("/rank_trade_partners") public List rankTradePartners(AnalysisBean analysis, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { JSONObject params = analysis.toParams(null); - orgManager.checkOrg(manager,params); + orgManager.checkOrg(manager, params); if (analysis.isOnlyGroup() && ManagerRole.BD_LEADER.hasRole(manager.getIntValue("role"))) { params.put("bd_group", manager.getString("manager_id")); - if (analysis.getGroup_bd()>0){ - params.put("bd_group_bd",analysis.getGroup_bd()); + if (analysis.getGroup_bd() > 0){ + params.put("bd_group_bd", analysis.getGroup_bd()); } } - return dashboardService.getTopTradePartners(params); + return dashboardService.getTopTradePartnersNew(params); } @ManagerMapping("/trade_in_hours") diff --git a/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java index 99217ffa0..85b8e6ae8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java @@ -80,7 +80,7 @@ public class BDPrizeServiceImpl implements BDPrizeService { private static BigDecimal percent = new BigDecimal(100); - private static String[] channels = new String[]{"Wechat", "Alipay", "Bestpay", "jd", "AlipayOnline","hf"}; + private static String[] channels = new String[]{"Wechat", "Alipay", "Bestpay", "jd", "AlipayOnline","hf", "Rpay"}; private static Logger logger = LoggerFactory.getLogger(BDPrizeServiceImpl.class); @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerLotteryCountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerLotteryCountServiceImpl.java index 4a20c7247..fb2296368 100644 --- a/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerLotteryCountServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerLotteryCountServiceImpl.java @@ -17,6 +17,9 @@ import org.springframework.web.util.UriComponentsBuilder; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; @Service public class CustomerLotteryCountServiceImpl implements ApplicationListener { @@ -39,9 +42,20 @@ public class CustomerLotteryCountServiceImpl implements ApplicationListener 0) { + return; + } + } catch (ParseException e) { + + } } BigDecimal clearAmount = event.getFinishedEvent().getAudFee(); String channel = order.getString("channel"); diff --git a/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerPointsServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerPointsServiceImp.java index 3cd2e8dad..750b48835 100644 --- a/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerPointsServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/customers/core/impls/CustomerPointsServiceImp.java @@ -23,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; @@ -284,7 +286,18 @@ public class CustomerPointsServiceImp implements CustomerPointsService { public BigDecimal checkLotteryAfterPay(String order_id) { JSONObject order = transactionAnalysisMapper.getOrderClearAmount(order_id); if (order.getIntValue("client_id") != 9) { - return BigDecimal.valueOf(0); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + Date newDay = new Date(); + try { + if (newDay.compareTo(sdf.parse("2018-09-24 00:00:00")) < 0) { + return BigDecimal.valueOf(0); + } + if (newDay.compareTo(sdf.parse("2018-10-15 00:00:00")) > 0) { + return BigDecimal.valueOf(0); + } + } catch (ParseException e) { + + } } return order.getBigDecimal("clearing_amount"); } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/HfUpdateService.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/HfUpdateService.java index bc5cf8b27..fb7611487 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/HfUpdateService.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/HfUpdateService.java @@ -6,4 +6,6 @@ public interface HfUpdateService { String updateStatus(); + String rpayUpdate(); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/HfUpdateImpl.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/HfUpdateImpl.java index 4d10674de..e9fa6ccc4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/HfUpdateImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/HfUpdateImpl.java @@ -1,5 +1,6 @@ package au.com.royalpay.payment.manage.dev.core.impl; +import au.com.royalpay.payment.channels.rpay.runtime.RpayApi; import au.com.royalpay.payment.manage.dev.core.HfUpdateService; import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; @@ -9,6 +10,8 @@ import au.com.royalpay.payment.tools.env.PlatformEnvironment; import com.alibaba.fastjson.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.List; @@ -23,6 +26,10 @@ public class HfUpdateImpl implements HfUpdateService { private MpWechatApiProvider mpWechatApiProvider; @Resource private ClientConfigMapper clientConfigMapper; + @Resource + private RpayApi rpayApi; + + private Logger logger = LoggerFactory.getLogger(getClass()); @Override public String updateStatus() { @@ -41,4 +48,19 @@ public class HfUpdateImpl implements HfUpdateService { }); return "ok"; } + + @Override + public String rpayUpdate() { + List clientIds = clientMapper.findByrpayNotNull(); + StringBuffer sb = new StringBuffer(); + clientIds.forEach(dbResult -> { + try { + rpayApi.modifySurchargeConfig(dbResult); + } catch (Exception e) { + sb.append("【" + dbResult.getString("client_moniker") + "】、"); + } + }); + logger.info("test for update rpay clearing date,fail + " + sb.toString()); + return "ok"; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java index 501daac17..c5f08f985 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java @@ -1,7 +1,9 @@ package au.com.royalpay.payment.manage.dev.core.impl; +import au.com.royalpay.payment.channels.rpay.runtime.RpayApi; import au.com.royalpay.payment.manage.dev.core.ManualService; import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper; +import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper; import au.com.royalpay.payment.manage.merchants.core.ClientModifySupport; import au.com.royalpay.payment.manage.merchants.entity.impls.SwitchPermissionModify; @@ -15,6 +17,7 @@ import org.apache.commons.lang3.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; @@ -40,6 +43,10 @@ public class ManualServiceimpl implements ManualService { private SynchronizedScheduler synchronizedScheduler; @Resource private ClientModifySupport clientModifySupport; + @Resource + private RpayApi rpayApi; + @Resource + private ClientMapper clientMapper; @Override public void clientPostpone() { @@ -70,24 +77,37 @@ public class ManualServiceimpl implements ManualService { cleanDays = wechatRate.getIntValue("c_clean_days"); } int finalCleanDays = cleanDays; - clientRates.forEach(o -> { - JSONObject record = clientRateMapper.latestExpiryConfig(client_id, o.getString("rate_name")); - record.remove("client_rate_id"); - record.put("active_time", now); - record.put("manager_id", 0); - record.put("expiry_time", yearTomorrow); - record.put("create_time", now); - record.put("update_time", now); - record.put("clean_days", finalCleanDays); - record.put("manager_name", "System"); - record.put("remark", "费率到期系统自动延期1年"); - clientRateMapper.saveRate(record); - }); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, p.getString("client_moniker"), "tax_in_surcharge", false)); + modifyClientRates(finalCleanDays,clientRates,client_id,p.getString("client_moniker")); + }); }); logger.info("end doing client postpone"); } + + @Transactional + public void modifyClientRates(int finalCleanDays,List clientRates,int client_id,String client_moniker) { + Date now = new Date(); + Date tomorrow = DateUtils.addDays(now, 1); + Date yearTomorrow = DateUtils.addYears(tomorrow, 1); + clientRates.forEach(o -> { + JSONObject record = clientRateMapper.latestExpiryConfig(client_id, o.getString("rate_name")); + record.remove("client_rate_id"); + record.put("active_time", now); + record.put("manager_id", 0); + record.put("expiry_time", yearTomorrow); + record.put("create_time", now); + record.put("update_time", now); + record.put("clean_days", finalCleanDays); + record.put("manager_name", "System"); + record.put("remark", "费率到期系统自动延期1年"); + clientRateMapper.saveRate(record); + if ("Rpay".equals(o.getString("rate_name"))) { + rpayApi.modifySurchargeConfig(clientMapper.findClient(client_id)); + } + + }); + clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client_moniker, "tax_in_surcharge", false)); + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java index c14326cc6..57adeb692 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java @@ -4,6 +4,7 @@ import au.com.royalpay.payment.channels.alipay.config.AlipayEnvironment; import au.com.royalpay.payment.channels.alipay.runtime.AlipayClient; import au.com.royalpay.payment.channels.bestpay.runtime.BestPayClient; import au.com.royalpay.payment.channels.jd.runtime.JDClient; +import au.com.royalpay.payment.channels.rpay.runtime.RpayClient; import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient; import au.com.royalpay.payment.core.PaymentApi; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; @@ -20,6 +21,7 @@ import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; import au.com.royalpay.payment.manage.mappers.payment.RefundMapper; import au.com.royalpay.payment.manage.mappers.system.ClientBankAccountMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; +import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; import au.com.royalpay.payment.manage.tradelog.core.TradeLogService; import au.com.royalpay.payment.tools.CommonConsts; @@ -55,6 +57,8 @@ import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -96,6 +100,8 @@ public class TestController implements ApplicationEventPublisherAware { @Resource private JDClient jdClient; @Resource + private RpayClient rpayClient; + @Resource private TradeLogService tradeLogService; @Resource private RetailAppService retailAppService; @@ -110,6 +116,9 @@ public class TestController implements ApplicationEventPublisherAware { private HfClearAmountService hfClearAmountService; @Resource private HfUpdateService hfUpdateService; + @Resource + private ClientManager clientManager; + private final static String EMAIL = "lily.tao@royalpay.com.au,bella.sun@royalpay.com.au,astro.dai@royalpay.com.au,taylor.dang@royalpay.com.au"; @ManagerMapping(value = "/{clientMoniker}/export/agreepdf", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.DIRECTOR, ManagerRole.OPERATOR}) public void exportAgreeFile(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, HttpServletResponse httpResponse) throws Exception { @@ -292,6 +301,11 @@ public class TestController implements ApplicationEventPublisherAware { xmlStr = XmlFormatUtils.formatXml(elem); res.put("xml", xmlStr); break; + case "Rpay": + JSONObject orderInfo = rpayClient.queryOrderStatus(orderId); + String rpayjson = JSON.toJSONString(orderInfo, SerializerFeature.PrettyFormat); + res.put("xml", rpayjson); + break; default: throw new BadRequestException("Not Support channel:" + channel); } @@ -403,4 +417,21 @@ public class TestController implements ApplicationEventPublisherAware { public String hfClearAmount() { return hfUpdateService.updateStatus(); } + + @ManagerMapping(value = "/rpayUpdate", method = RequestMethod.PUT, role = ManagerRole.DEVELOPER) + public String rpayUpdateClearing() { + return hfUpdateService.rpayUpdate(); + } + + @ManagerMapping(value = "/partner/reset_password", method = RequestMethod.GET, role = ManagerRole.DEVELOPER) + public void resetPartnerPassword() { + final List emails = new ArrayList<>(); + List emailList = Arrays.asList(EMAIL.split(",")); + emailList.stream().forEach(email -> { + if (!emails.contains(email)) { + emails.add(email); + } + }); + clientManager.updateAllPartnerPassword("PINE", emails); + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/logview/beans/NotifyQueryBean.java b/src/main/java/au/com/royalpay/payment/manage/logview/beans/NotifyQueryBean.java index 725f63337..72ec88677 100644 --- a/src/main/java/au/com/royalpay/payment/manage/logview/beans/NotifyQueryBean.java +++ b/src/main/java/au/com/royalpay/payment/manage/logview/beans/NotifyQueryBean.java @@ -15,6 +15,10 @@ public class NotifyQueryBean { private int page = 1; private int limit = 20; private String moniker; + + // 新增orderId查询字段 + private String orderId; + private String clientOrderId; private String date; private Boolean success; @@ -24,6 +28,11 @@ public class NotifyQueryBean { if (StringUtils.isNotEmpty(moniker)) { param.put("client_moniker", moniker); } + + if (StringUtils.isNotEmpty(orderId)) { + param.put("order_id", orderId); + } + if (StringUtils.isNotEmpty(clientOrderId)) { param.put("client_order_id", clientOrderId); } @@ -88,4 +97,12 @@ public class NotifyQueryBean { public void setSuccess(Boolean success) { this.success = success; } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java index c99cf7636..5c3cbaea3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java @@ -618,7 +618,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider Date expiryTime = client.getDate("expiry_time"); client.put("generatable", expiryTime != null); if (expiryTime != null) { - client.put("expiry_time", expiryTime.getTime()); + client.put("expiry_time", DateFormatUtils.format(client.getDate("expiry_time"), "dd/MM/yyyy")); } } warnings.put("no_rate", rateInDanger); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/risk/RiskAttentionMerchantsMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/risk/RiskAttentionMerchantsMapper.java index b97ddb822..62b3f0ed7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/risk/RiskAttentionMerchantsMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/risk/RiskAttentionMerchantsMapper.java @@ -34,11 +34,11 @@ public interface RiskAttentionMerchantsMapper { PageList query(JSONObject params, PageBounds pagination); @Select("SELECT client_moniker FROM risk_attention_merchants " + - "WHERE (abn = #{abn} ) OR (acn = #{acn} ) " + + "WHERE ((abn = #{abn} ) OR (acn = #{acn} ) " + " OR (contact_phone = #{contact_phone} ) " + " OR (contact_person = #{contact_person} ) " + " OR (client_moniker = #{client_moniker} ) " + - " OR (bank_account_no = #{bank_account_no} ) AND is_valid=1") + " OR (bank_account_no = #{bank_account_no} )) AND is_valid=1") List listRiskySimilarMerchants(JSONObject params); } 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 f42b842c5..a1b6d4cb9 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 @@ -102,4 +102,6 @@ public interface ClientMapper { @AutoSql(type = SqlType.UPDATE) void updateRpayEnterpriseId(@Param("client_id") int clientId, @Param("rpay_enterprise_id") String rpayEnterpriseId); + List findByrpayNotNull(); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java index 06664dc14..23620f712 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java @@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; /** - * Created by yangluo on 2017-03-14. + * Created by yangluo on 2018-09-18. */ @AutoMapper(tablename = "sys_rpay_merchant_apply",pkName = "merchant_app_id") public interface SysRpayMerchantApplyMapper { @@ -21,6 +21,6 @@ public interface SysRpayMerchantApplyMapper { void insertRpayMerchantApply(JSONObject params); @AutoSql(type = SqlType.SELECT) - List listByShortName(@Param("client_id") int client_id,@Param("merchant_shortname") String shortName); + List listByShortName(@Param("merchant_shortname") String shortName); } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRateConfig.java b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRateConfig.java index 351a8794d..8b37efce7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRateConfig.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRateConfig.java @@ -18,15 +18,23 @@ public class ClientRateConfig { @JSONField(name = "rate_name") @NotEmpty(message = "error.payment.valid.param_missing") private String rateName; + @JSONField(name = "rate_value") @NotNull(message = "error.payment.valid.param_missing") private Double rateValue; + + @JSONField(name = "transaction_fee") + @NotNull(message = "error.payment.valid.param_missing") + private Double transactionFee; + @JSONField(name = "active_time") @NotNull(message = "error.payment.valid.param_missing") private Date activeTime; + @JSONField(name = "expiry_time") @NotNull(message = "error.payment.valid.param_missing") private Date expiryTime; + @JSONField(name = "clean_days") @NotNull(message = "error.payment.valid.param_missing") private Integer cleanDays = 3; @@ -86,4 +94,12 @@ public class ClientRateConfig { public void setRemark(String remark) { this.remark = remark; } + + public Double getTransactionFee() { + return transactionFee; + } + + public void setTransactionFee(Double transactionFee) { + this.transactionFee = transactionFee; + } } 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 3e03074d9..8bcca2a11 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 @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.PathVariable; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -336,7 +337,9 @@ public interface ClientManager { void sendHfEmailNotice(JSONObject order); - void subRpayMerchantApplication(String clientMoniker, JSONObject manager); + void subRpayMerchantApplication(String clientMoniker,JSONObject merchantInfo, JSONObject manager); void updateAllPartnerPassword(String clientMoniker, List emails); + + void postponeClientRate(Date now, Date yearTomorrow, String expireDate, JSONObject client); } 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 01d570fc5..15d9d6f59 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 @@ -123,6 +123,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageList; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; @@ -239,6 +240,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid @Resource private WxPayClient wxPayClient; + @Resource + private RpayApi rpayApi; + @Resource private ManagerMapper managerMapper; @Resource @@ -282,8 +286,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid @Resource private ClientInfoCacheSupport clientInfoCacheSupport; - @Resource - private RpayApi rpayApi; @Resource private SimpleClientApplyService simpleClientApplyService; @Resource @@ -790,18 +792,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid logger.error("记录log_client_sub_merchant_id失败", e); } clientMapper.update(update); - List children = clientMapper.listChildClients(clientId); - for (JSONObject child : children) { - if (Objects.equals(child.getString("rpay_enterprise_id"), originSubMerchantId)) { - update.put("client_id", child.getIntValue("client_id")); - try { - recordSubMerchantLog(child, rpaySubMerchantInfo, manager); - } catch (Exception e) { - logger.error("记录log_client_sub_merchant_id失败", e); - } - clientMapper.update(update); - } - } clientInfoCacheSupport.clearClientCache(clientId); } @@ -1574,6 +1564,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } @Override + @Transactional public void newConfigRate(JSONObject manager, String clientMoniker, JSONObject config) { JSONObject client = getClientInfoByMoniker(clientMoniker); if (client == null) { @@ -1609,6 +1600,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid configNewClientRate(config, clientId, "hf", "hf_rate_value", org, "min_hf_rate"); configNewClientRate(config, clientId, "Rpay", "Rpay_rate_value", org, "min_Rpay_rate"); + rpayApi.modifySurchargeConfig(client); + } private void configNewClientRate(JSONObject config, int clientId, String channel, String rateKey, JSONObject org, String rateValueKey) { @@ -1632,6 +1625,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } @Override + @Transactional public void modifyRateConfig(JSONObject manager, String clientMoniker, int rateId, ClientRateConfig config) { JSONObject client = getClientInfoByMoniker(clientMoniker); if (client == null) { @@ -1650,6 +1644,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid configJson.put("manager_name", manager.getString("username")); configJson.put("update_time", new Date()); clientRateMapper.updateConfig(configJson); + if ("Rpay".equals(configJson.getString("rate_name"))) { + rpayApi.modifySurchargeConfig(client); + } int clientId = client.getIntValue("client_id"); JSONObject changeRate = merchantInfoProvider.clientCurrentRate(clientId, new Date(), "Wechat"); int cleanDays = changeRate.getIntValue("clean_days"); @@ -3188,12 +3185,15 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } @Override + @Transactional public void setSkipClearing(JSONObject account, String clientMoniker, Boolean skip_clearing) { JSONObject client = getClientInfoByMoniker(clientMoniker); if (client == null) { throw new InvalidShortIdException(); } clientModifySupport.processClientConfigModify(new SwitchPermissionModify(account, clientMoniker, "skip_clearing", skip_clearing)); + client.put("skip_clearing", skip_clearing); + rpayApi.switchMerchantSettle(client); } @Override @@ -3598,33 +3598,35 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } @Override - public void subRpayMerchantApplication(String clientMoniker, JSONObject manager) { + public void subRpayMerchantApplication(String clientMoniker, JSONObject merchantInfo,JSONObject manager) { JSONObject client = getClientInfoByMoniker(clientMoniker); if (client == null) { throw new InvalidShortIdException(); } checkOrgPermission(manager, client); - List listByshortName = sysRpayMerchantApplyMapper.listByShortName(client.getIntValue("client_id"),client.getString("short_name")); + List listByshortName = sysRpayMerchantApplyMapper.listByShortName(merchantInfo.getString("company_shortname")); if (listByshortName.size()>0) { - throw new BadRequestException("请修改【" + clientMoniker + "】的Company shortName信息(请避免和Rpay+商务号列表内的Company Short Name重复)"); + throw new BadRequestException("请修改【" + clientMoniker + "】的Company shortName信息(Short Name 已被使用)"); + } + if (client.getString("rpay_enterprise_id") != null) { + throw new BadRequestException("您已申请成功子商务号,请勿重复申请"); } - SubRpayMerchantInfo subRpayMerchantInfo = JSONObject.toJavaObject(client, SubRpayMerchantInfo.class); + SubRpayMerchantInfo subRpayMerchantInfo = JSONObject.toJavaObject(merchantInfo, SubRpayMerchantInfo.class); subRpayMerchantInfo.CheckEmpty(); JSONObject rpayMerchantInfo = rpayApi.registerMerchant(client.getIntValue("client_id"), subRpayMerchantInfo); if (rpayMerchantInfo != null) { - JSONObject merchantApply = new JSONObject(); - merchantApply.put("merchant_id", rpayMerchantInfo.getString("rpay_order_id")); - merchantApply.put("client_id", client.getString("client_id")); - merchantApply.put("create_time", new Date()); - merchantApply.put("operator", manager.getString("display_name")); - merchantApply.put("sub_merchant_id", rpayMerchantInfo.getString("merchantId")); - merchantApply.put("business_category", client.getString("royalpayindustry")); - merchantApply.put("merchant_shortname", client.getString("short_name")); - sysRpayMerchantApplyMapper.insertRpayMerchantApply(merchantApply); + merchantInfo.put("merchant_id", rpayMerchantInfo.getString("rpay_order_id")); + merchantInfo.put("client_id", client.getString("client_id")); + merchantInfo.put("create_time", new Date()); + merchantInfo.put("operator", manager.getString("display_name")); + merchantInfo.put("sub_merchant_id", rpayMerchantInfo.getString("merchantId")); + merchantInfo.put("business_category", client.getString("royalpayindustry")); + merchantInfo.put("merchant_shortname", merchantInfo.getString("company_shortname")); + sysRpayMerchantApplyMapper.insertRpayMerchantApply(merchantInfo); clientMapper.updateRpayEnterpriseId(client.getIntValue("client_id"), rpayMerchantInfo.getString("merchantId")); }else { throw new BadRequestException("请求失败"); @@ -3969,6 +3971,74 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } + private void sendClientPostponeNotify(JSONObject account, String newExpireDate) { + JSONObject client = getClientInfo(account.getIntValue("client_id")); + + try { + if (StringUtils.isEmpty(account.getString("wechat_openid"))) { + return; + } + MpWechatApi api = mpWechatApiProvider.getApiFromOpenId(account.getString("wechat_openid")); + if (api != null) { + String templateId = api.getTemplateId("client-postpone"); + if (templateId != null) { + TemplateMessage notice = initClientMessage(client, newExpireDate, account.getString("wechat_openid"), templateId); + api.sendTemplateMessage(notice); + } + } + } catch (Exception e) { + logger.error("Sending Notify failure", e); + } + } + + @Override + @Transactional + public void postponeClientRate(Date now, Date yearTomorrow, String expireDate, JSONObject client) { + int client_id = client.getIntValue("client_id"); + List adminAccounts = clientAccountMapper.listAdminAccounts(client_id); + List clientRates = clientRateMapper.maxChannelExpiryTime(client_id, null); + JSONObject wechatRate = clientRateMapper.latestChannelCleanDays("Wechat", client.getIntValue("client_id")); + int cleanDays = 1; + if (wechatRate.getInteger("clean_days") != null) { + cleanDays = wechatRate.getIntValue("clean_days"); + } else { + cleanDays = wechatRate.getIntValue("c_clean_days"); + } + int finalCleanDays = cleanDays; + for (JSONObject o : clientRates) { + JSONObject record = clientRateMapper.latestExpiryConfig(client_id, o.getString("rate_name")); + record.remove("client_rate_id"); + record.put("active_time", now); + record.put("manager_id", 0); + record.put("expiry_time", yearTomorrow); + record.put("create_time", now); + record.put("update_time", now); + record.put("clean_days", finalCleanDays); + record.put("manager_name", "System"); + record.put("remark", "费率到期系统自动延期1年"); + clientRateMapper.saveRate(record); + if ("Rpay".equals(o.getString("rate_name"))) { + //rpayApi.modifySurchargeConfig(clientMapper.findClient(client_id)); + } + } + clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client.getString("client_moniker"), "tax_in_surcharge", false)); + adminAccounts.forEach(o -> { + sendClientPostponeNotify(o, expireDate); + }); + } + + + + private TemplateMessage initClientMessage(JSONObject client, String newExpiryDate, String wechatOpenid, String templateId) { + TemplateMessage notice = new TemplateMessage(wechatOpenid, templateId, null); + notice.put("first", "您好,您的合同费率已到期,根据合同协议系统已自动为您延期1年。", "#ff0000"); + notice.put("keyword1", client.getString("short_name") + "(" + client.getString("client_moniker") + ")", "#ff0000"); + notice.put("keyword2", newExpiryDate, "#0000ff"); + notice.put("remark", "如有疑问请联系RoyalPay", "#000000"); + return notice; + } + + private void sendTestMerchantPassword(List accounts, List emails) { Context ctx = new Context(); ctx.setVariable("accounts", accounts); 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 6d186abbe..76edb9f5c 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 @@ -17,9 +17,7 @@ import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.http.HttpUtils; import au.com.royalpay.payment.tools.merchants.beans.QRCodeConfig; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; - import com.alibaba.fastjson.JSONObject; - import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; @@ -581,9 +579,10 @@ public class PartnerManageController { public void switchHfEmailNotice(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { clientManager.switchPermission(manager, clientMoniker, "enable_hf_email_notice", pass.getBooleanValue("allow")); } + @ManagerMapping(value = "/{clientMoniker}/registRpaySubMerchantId", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) - public void subRpayMerchantApplication(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { - clientManager.subRpayMerchantApplication(clientMoniker, manager); + public void subRpayMerchantApplication(@PathVariable String clientMoniker,@RequestBody JSONObject merchantInfo,@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.subRpayMerchantApplication(clientMoniker, merchantInfo,manager); } } diff --git a/src/main/java/au/com/royalpay/payment/manage/support/cms/core/AppStyleService.java b/src/main/java/au/com/royalpay/payment/manage/support/cms/core/AppStyleService.java new file mode 100644 index 000000000..3b83a79f5 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/support/cms/core/AppStyleService.java @@ -0,0 +1,15 @@ +package au.com.royalpay.payment.manage.support.cms.core; + +import com.alibaba.fastjson.JSONObject; + +public interface AppStyleService { + JSONObject listAppStyleGroup(int page, int limit); + + JSONObject getAppStyleByStyleId(String style_id); + + void switchGroupByStyleId(String style_id); + + void addAppStyle(String style_id, JSONObject appStyleGroup); + + void updateAppStyleByStyleId(String style_id, String originStyleId, JSONObject appStyleGroup); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/support/cms/core/Impl/AppStyleServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/support/cms/core/Impl/AppStyleServiceImpl.java new file mode 100644 index 000000000..e189061a9 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/support/cms/core/Impl/AppStyleServiceImpl.java @@ -0,0 +1,47 @@ +package au.com.royalpay.payment.manage.support.cms.core.Impl; + +import au.com.royalpay.payment.manage.support.cms.core.AppStyleService; +import au.com.royalpay.payment.tools.cms.RoyalPayCMSSupport; + +import com.alibaba.fastjson.JSONObject; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class AppStyleServiceImpl implements AppStyleService { + + @Value("${app.cms.host}") + private String cmsHost; + private Logger logger = LoggerFactory.getLogger(getClass()); + @Resource + private RoyalPayCMSSupport royalPayCMSSupport; + @Override + public JSONObject listAppStyleGroup(int page, int limit) { + return royalPayCMSSupport.listAppStyleGroup(page,limit); + } + + @Override + public JSONObject getAppStyleByStyleId(String style_id) { + return royalPayCMSSupport.getAppStyleByStyleId(style_id); + } + + @Override + public void switchGroupByStyleId(String style_id) { + royalPayCMSSupport.switchGroupByStyleId(style_id); + } + + @Override + public void addAppStyle(String style_id, JSONObject appStyleGroup) { + royalPayCMSSupport.addAppStyle(style_id,appStyleGroup); + } + + @Override + public void updateAppStyleByStyleId(String style_id, String originStyleId, JSONObject appStyleGroup) { + royalPayCMSSupport.updateAppStyleByStyleId(style_id,originStyleId,appStyleGroup); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/support/cms/web/AppStyleController.java b/src/main/java/au/com/royalpay/payment/manage/support/cms/web/AppStyleController.java new file mode 100644 index 000000000..2ea0a87e0 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/support/cms/web/AppStyleController.java @@ -0,0 +1,42 @@ +package au.com.royalpay.payment.manage.support.cms.web; + + +import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.manage.support.cms.core.AppStyleService; +import au.com.royalpay.payment.tools.permission.enums.ManagerRole; +import com.alibaba.fastjson.JSONObject; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@ManagerMapping(value = "/app/cms/app_style", role = {ManagerRole.SITE_MANAGER}) +public class AppStyleController { + @Resource + private AppStyleService appStyleService; + + @RequestMapping(value = "/style_group", method = RequestMethod.GET) + public JSONObject listAppStyleGroup(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int limit) { + return appStyleService.listAppStyleGroup(page, limit); + } + + @RequestMapping(value = "/style_group/{style_id}", method = RequestMethod.GET) + public JSONObject getAppStyleByStyleId(@PathVariable String style_id) { + return appStyleService.getAppStyleByStyleId(style_id); + } + + @RequestMapping(value = "/style_group/{style_id}", method = RequestMethod.PUT) + public void switchGroupByStyleId(@PathVariable String style_id) { + appStyleService.switchGroupByStyleId(style_id); + } + + @RequestMapping(value = "/style_group", method = RequestMethod.POST) + public void addOneGroupAppStyle(@RequestParam String style_id, @RequestBody JSONObject appStyleGroup) { + appStyleService.addAppStyle(style_id, appStyleGroup); + } + + @RequestMapping(value = "/style_group/{style_id}/style", method = RequestMethod.PUT) + public void updateAppStyleByStyleId(@PathVariable String style_id,@RequestParam String originStyleId, @RequestBody JSONObject appStyleGroup) { + appStyleService.updateAppStyleByStyleId(style_id, originStyleId, appStyleGroup); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/task/PostponeClientTask.java b/src/main/java/au/com/royalpay/payment/manage/task/PostponeClientTask.java index 18a98a6d7..c03a84d31 100644 --- a/src/main/java/au/com/royalpay/payment/manage/task/PostponeClientTask.java +++ b/src/main/java/au/com/royalpay/payment/manage/task/PostponeClientTask.java @@ -1,11 +1,8 @@ package au.com.royalpay.payment.manage.task; -import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper; import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper; import au.com.royalpay.payment.manage.mappers.system.ManagerMapper; import au.com.royalpay.payment.manage.merchants.core.ClientManager; -import au.com.royalpay.payment.manage.merchants.core.ClientModifySupport; -import au.com.royalpay.payment.manage.merchants.entity.impls.SwitchPermissionModify; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider; import au.com.royalpay.payment.tools.connections.mpsupport.beans.TemplateMessage; @@ -21,12 +18,9 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; import javax.annotation.Resource; @@ -45,13 +39,9 @@ public class PostponeClientTask { @Resource private ClientManager clientManager; @Resource - private ClientAccountMapper clientAccountMapper; - @Resource private ManagerMapper managerMapper; @Resource private SynchronizedScheduler synchronizedScheduler; - @Resource - private ClientModifySupport clientModifySupport; @Scheduled(cron = "0 30 8 * * ?") public void postponeClient() { @@ -61,76 +51,25 @@ public class PostponeClientTask { Date yearTomorrow = DateUtils.addYears(tomorrow, 1); String expireDate = DateFormatUtils.format(yearTomorrow, "yyyy-MM-dd"); List expiryClient = clientRateMapper.getAllExpiry(now); - + StringBuilder sb = new StringBuilder(); if (CollectionUtils.isEmpty(expiryClient)) { return; } - Map expiryClients = new HashMap<>(); - expiryClient.forEach(p -> { - expiryClients.put(p.getInteger("client_id"), p); - }); - expiryClients.values().forEach(p -> { - int client_id = p.getIntValue("client_id"); - List adminAccounts = clientAccountMapper.listAdminAccounts(client_id); - List clientRates = clientRateMapper.maxChannelExpiryTime(client_id, null); - JSONObject wechatRate = clientRateMapper.latestChannelCleanDays("Wechat", p.getIntValue("client_id")); - int cleanDays = 1; - if (wechatRate.getInteger("clean_days") != null) { - cleanDays = wechatRate.getIntValue("clean_days"); - } else { - cleanDays = wechatRate.getIntValue("c_clean_days"); - } - int finalCleanDays = cleanDays; - clientRates.forEach(o -> { - JSONObject record = clientRateMapper.latestExpiryConfig(client_id, o.getString("rate_name")); - record.remove("client_rate_id"); - record.put("active_time", now); - record.put("manager_id", 0); - record.put("expiry_time", yearTomorrow); - record.put("create_time", now); - record.put("update_time", now); - record.put("clean_days", finalCleanDays); - record.put("manager_name", "System"); - record.put("remark", "费率到期系统自动延期1年"); - clientRateMapper.saveRate(record); - - }); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, p.getString("client_moniker"), "tax_in_surcharge", false)); - adminAccounts.forEach(o -> { - sendClientPostponeNotify(o, expireDate); - }); - }); - sendComplianceNotify(expiryClients, expireDate); - }); - } - - private void sendClientPostponeNotify(JSONObject account, String newExpireDate) { - JSONObject client = clientManager.getClientInfo(account.getIntValue("client_id")); - - try { - if (StringUtils.isEmpty(account.getString("wechat_openid"))) { - return; - } - MpWechatApi api = mpWechatApiProvider.getApiFromOpenId(account.getString("wechat_openid")); - if (api != null) { - String templateId = api.getTemplateId("client-postpone"); - if (templateId != null) { - TemplateMessage notice = initClientMessage(client, newExpireDate, account.getString("wechat_openid"), templateId); - api.sendTemplateMessage(notice); + for (JSONObject client : expiryClient) { + try { + clientManager.postponeClientRate(now, yearTomorrow, expireDate, client); + sb.append(client.getString("client_moniker")); + sb.append("、"); + } catch (Exception ignore) { + continue; } } - } catch (Exception e) { - logger.error("Sending Notify failure", e); - } + sb.deleteCharAt(sb.length() - 1); + sendComplianceNotify(sb, expireDate); + }); } - private void sendComplianceNotify(Map clients, String newExpireDate) { - StringBuffer sb = new StringBuffer(); - clients.values().forEach(p -> { - sb.append(p.getString("client_moniker")); - sb.append("、"); - }); - sb.deleteCharAt(sb.length() - 1); + private void sendComplianceNotify(StringBuilder sb, String newExpireDate) { List compliance = managerMapper.listOpenIdsOfCompliances(); compliance.forEach(p -> { MpWechatApi api = mpWechatApiProvider.getApiFromOpenId(p); @@ -139,16 +78,6 @@ public class PostponeClientTask { }); } - - private TemplateMessage initClientMessage(JSONObject client, String newExpiryDate, String wechatOpenid, String templateId) { - TemplateMessage notice = new TemplateMessage(wechatOpenid, templateId, null); - notice.put("first", "您好,您的合同费率已到期,根据合同协议系统已自动为您延期1年。", "#ff0000"); - notice.put("keyword1", client.getString("short_name") + "(" + client.getString("client_moniker") + ")", "#ff0000"); - notice.put("keyword2", newExpiryDate, "#0000ff"); - notice.put("remark", "如有疑问请联系RoyalPay", "#000000"); - return notice; - } - private TemplateMessage initComplianceMessage(String clients, String newExpiryDate, String wechatOpenid, String templateId) { TemplateMessage notice = new TemplateMessage(wechatOpenid, templateId, null); notice.put("first", "以下商户据合同费率已经自动延期1年", "#ff0000"); @@ -157,5 +86,4 @@ public class PostponeClientTask { notice.put("remark", " ", "#000000"); return notice; } - } diff --git a/src/main/java/au/com/royalpay/payment/manage/task/SettleEstimateTaskManger.java b/src/main/java/au/com/royalpay/payment/manage/task/SettleEstimateTaskManger.java index d7d38327a..d1b69b508 100644 --- a/src/main/java/au/com/royalpay/payment/manage/task/SettleEstimateTaskManger.java +++ b/src/main/java/au/com/royalpay/payment/manage/task/SettleEstimateTaskManger.java @@ -42,6 +42,6 @@ public class SettleEstimateTaskManger { @Scheduled(cron = "0 0 10 * * ?") public void generateSettleLogs2() { - synchronizedScheduler.executeProcess("manage_task:genSettleLogappli2", 120_000, () -> platformClearService.generateSettleLogs()); + synchronizedScheduler.executeProcess("manage_task:generateAliPaySettleLog", 120_000, () -> platformClearService.generateAliPaySettleLogs()); } } diff --git a/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java b/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java index 88a81a0d1..5c7152c06 100644 --- a/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java +++ b/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java @@ -10,6 +10,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -24,13 +25,12 @@ public class UpdatePartnerPasswordTask { @Resource private ManagerMapper managerMapper; - private final static String EMAIL = "lily.tao@royalpay.com.au,bella.sun@royalpay.com.au," + - "astro.dai@royalpay.com.au,taylor.dang@royalpay.com.au"; + private final static String EMAIL = "lily.tao@royalpay.com.au,bella.sun@royalpay.com.au,astro.dai@royalpay.com.au,taylor.dang@royalpay.com.au"; @Scheduled(cron = "0 0 9 28 * ?") public void resetPartnerPassword() { - synchronizedScheduler.executeProcess("manage_task:resetPartnerPassword", 120_000, () -> { - final List emails = managerMapper.listDevManager(); + synchronizedScheduler.executeProcess("manage_task:resetPartnerPassword", 300_000, () -> { + final List emails = new ArrayList<>(); List emailList = Arrays.asList(EMAIL.split(",")); emailList.stream().forEach(email -> { if (!emails.contains(email)) { diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.xml index c5462dae2..2a9443ed6 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientAnalysisMapper.xml @@ -40,6 +40,19 @@ GROUP BY a.datelist + + + + = #{begin} + AND t.create_time <= #{end} + ]]> + + AND p.org_id = #{org_id} + + + AND p.org_id IN + + #{org_id} + + + + AND p.client_id IN ( + SELECT b.client_id + FROM sys_client_bd b + INNER JOIN financial_bd_config c + ON c.manager_id = b.bd_id + WHERE b.is_valid = 1 + AND b.start_date <= now() + AND (b.end_date IS NULL OR b.end_date >= now()) + AND (c.bd_group = #{bd_group} OR c.manager_id = #{bd_group}) + + AND c.manager_id = #{bd_group_bd} + + ) + + GROUP BY p.client_id + + ORDER BY ${rankType} DESC + + + LIMIT ${limit} + + diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/NotifyErrorLogMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/NotifyErrorLogMapper.xml index 66e84f217..3e17fbc8e 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/NotifyErrorLogMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/NotifyErrorLogMapper.xml @@ -1,6 +1,8 @@ + + + + + select client_id,client_moniker FROM sys_clients WHERE hf_pay_url != '' + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientRateMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientRateMapper.xml index 8407cb6c3..545d64bdc 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientRateMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientRateMapper.xml @@ -113,7 +113,7 @@ sys_client_rates cr inner join sys_clients c on c.client_id = cr.client_id and c.is_valid = 1 and (c.approve_result = 1 or c.approve_result = 2) GROUP BY - cr.client_id ,cr.rate_name + cr.client_id ) a WHERE a.expiry_time < #{expiry_date} diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index cb1429ab3..e610c6ee9 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -542,6 +542,8 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func return '/static/images/jd_sign_lg.png'; case 'hf': return '/static/images/hf_sign_lg.png'; + case 'Rpay': + return '/static/images/rpayplus_sign_lg.png'; } } }); diff --git a/src/main/ui/static/analysis/customer_analysis.js b/src/main/ui/static/analysis/customer_analysis.js index e7c2f4a9e..826c70478 100644 --- a/src/main/ui/static/analysis/customer_analysis.js +++ b/src/main/ui/static/analysis/customer_analysis.js @@ -77,6 +77,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' $http.get('/analysis/customers/ranking/'+$scope.params.openid_type, {params: params}).then(function (resp) { $scope.customer_loading = false; $scope.customers = resp.data.data; + $scope.customers_type = resp.data.openid_type; $scope.customers_analysis = resp.data.analysis; $scope.pagination = resp.data.pagination; if($scope.customers.length>0){ diff --git a/src/main/ui/static/analysis/templates/customer_analysis.html b/src/main/ui/static/analysis/templates/customer_analysis.html index d155affb3..34029ebb7 100644 --- a/src/main/ui/static/analysis/templates/customer_analysis.html +++ b/src/main/ui/static/analysis/templates/customer_analysis.html @@ -22,6 +22,7 @@ +
@@ -99,6 +100,7 @@ + @@ -110,6 +112,26 @@ + + + + @@ -179,6 +201,8 @@ uib-tooltip="JD Pay" ng-if="order.channel=='jd'"/> + {{order.order_id}}

@@ -120,7 +122,7 @@

-
+

diff --git a/src/main/ui/static/config/bdprize/bdprize.js b/src/main/ui/static/config/bdprize/bdprize.js index d444fb858..6b5fa2f4c 100644 --- a/src/main/ui/static/config/bdprize/bdprize.js +++ b/src/main/ui/static/config/bdprize/bdprize.js @@ -392,6 +392,8 @@ define(['angular', '../../analysis/bd/analysis-bd'], function (angular) { return '/static/images/jd_sign_lg.png'; case 'hf': return '/static/images/hf_sign_lg.png'; + case 'Rpay': + return '/static/images/rpayplus_sign_lg.png'; } } }); diff --git a/src/main/ui/static/config/bdprize/templates/bd_prize_detail.html b/src/main/ui/static/config/bdprize/templates/bd_prize_detail.html index 05fd32c87..5c49583b6 100644 --- a/src/main/ui/static/config/bdprize/templates/bd_prize_detail.html +++ b/src/main/ui/static/config/bdprize/templates/bd_prize_detail.html @@ -132,6 +132,19 @@
+
+
+
+ +
+
+
Transaction: ${{detail.RpayDetail.total_amount}}
+
Commission: ${{detail.RpayDetail.total_prize}}
+
Send: ${{detail.RpayDetail.send_prize}}
+
Fund: ${{detail.RpayDetail.total_donation}}
+
+
+
Details(Red Client Moniker means received from BD User who left company.)
@@ -174,6 +187,7 @@ +
diff --git a/src/main/ui/static/config/bdprize/templates/bd_prize_month_report.html b/src/main/ui/static/config/bdprize/templates/bd_prize_month_report.html index 1ab3492ee..4d314367a 100644 --- a/src/main/ui/static/config/bdprize/templates/bd_prize_month_report.html +++ b/src/main/ui/static/config/bdprize/templates/bd_prize_month_report.html @@ -107,6 +107,18 @@ +
+
+
+ +
+
+
BD Total Commission: ${{report.RpayReport.total_prize}}
+
BD Total Send: ${{report.RpayReport.total_send_prize}}
+
BD Total Fund: ${{report.RpayReport.total_donation}}
+
+
+
BD Commission
diff --git a/src/main/ui/static/config/devtools/devtools.js b/src/main/ui/static/config/devtools/devtools.js index e5dd667ed..009e3dcc5 100644 --- a/src/main/ui/static/config/devtools/devtools.js +++ b/src/main/ui/static/config/devtools/devtools.js @@ -63,6 +63,10 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { url: '/hfupdate', templateUrl: '/static/config/devtools/templates/hfupdate.html', controller: 'hfupdateCtrl' + }).state('devtools.rpayupdate', { + url: '/rpayupdate', + templateUrl: '/static/config/devtools/templates/rpayupdate.html', + controller: 'rpayupdateCtrl' }) }]); app.controller('devManualRefundCtrl', ['$scope', '$http', 'commonDialog', function ($scope, $http, commonDialog) { @@ -384,6 +388,22 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }]); + app.controller('rpayupdateCtrl', ['$scope', '$http','$filter', function ($scope, $http,$filter) { + $scope.selecttotal = true; + $scope.update = function () { + $scope.totalhide = true; + $scope.selecttotal = false; + + $http.put('/dev/rpayUpdate').then(function (resp) { + $scope.totalhide = false; + $scope.selecttotal = true; + }, function (resp) { + alert(resp.data.message); + }) + } + + }]); + return app; }); \ No newline at end of file diff --git a/src/main/ui/static/config/devtools/templates/hfupdate.html b/src/main/ui/static/config/devtools/templates/hfupdate.html index aa428f774..aa834204e 100644 --- a/src/main/ui/static/config/devtools/templates/hfupdate.html +++ b/src/main/ui/static/config/devtools/templates/hfupdate.html @@ -1,5 +1,5 @@
-

更新HF短链接

+

更新HF短链接

diff --git a/src/main/ui/static/config/devtools/templates/rpayupdate.html b/src/main/ui/static/config/devtools/templates/rpayupdate.html new file mode 100644 index 000000000..f91337e4f --- /dev/null +++ b/src/main/ui/static/config/devtools/templates/rpayupdate.html @@ -0,0 +1,15 @@ +
+

更新Rpay进件费率时间

+ +
+
+
+ +
+
\ No newline at end of file diff --git a/src/main/ui/static/config/devtools/templates/wx_settlements.html b/src/main/ui/static/config/devtools/templates/wx_settlements.html index 368c87bf2..dacfa0a9b 100644 --- a/src/main/ui/static/config/devtools/templates/wx_settlements.html +++ b/src/main/ui/static/config/devtools/templates/wx_settlements.html @@ -53,7 +53,7 @@ - + diff --git a/src/main/ui/static/config/logview/templates/notify_log.html b/src/main/ui/static/config/logview/templates/notify_log.html index d59ace1a8..38c66e3dd 100644 --- a/src/main/ui/static/config/logview/templates/notify_log.html +++ b/src/main/ui/static/config/logview/templates/notify_log.html @@ -24,6 +24,21 @@ is-open="dtCtrl.open" ng-click="dtCtrl.open=true"> + + +
+ +
+ +
+
+
@@ -61,6 +76,7 @@
+ @@ -71,7 +87,8 @@ - + + diff --git a/src/main/ui/static/dashboard/templates/dashboard.html b/src/main/ui/static/dashboard/templates/dashboard.html index 73b1c3d38..d59afe063 100644 --- a/src/main/ui/static/dashboard/templates/dashboard.html +++ b/src/main/ui/static/dashboard/templates/dashboard.html @@ -159,6 +159,23 @@
HF
+ + +
+
+
交易额: + +
+
订单数: + +
+
Rpay+
+
+
+ + diff --git a/src/main/ui/static/images/nap.png b/src/main/ui/static/images/nap.png new file mode 100644 index 000000000..613b393fa Binary files /dev/null and b/src/main/ui/static/images/nap.png differ diff --git a/src/main/ui/static/images/royalpay_sign_ln.png b/src/main/ui/static/images/royalpay_sign_ln.png new file mode 100644 index 000000000..72178aee3 Binary files /dev/null and b/src/main/ui/static/images/royalpay_sign_ln.png differ diff --git a/src/main/ui/static/images/rpay/icon_success_red_186x186.png b/src/main/ui/static/images/rpay/icon_success_red_186x186.png new file mode 100644 index 000000000..398567d1c Binary files /dev/null and b/src/main/ui/static/images/rpay/icon_success_red_186x186.png differ diff --git a/src/main/ui/static/images/rpay/rpay_horizental.png b/src/main/ui/static/images/rpay/rpay_horizental.png new file mode 100644 index 000000000..06b240e48 Binary files /dev/null and b/src/main/ui/static/images/rpay/rpay_horizental.png differ diff --git a/src/main/ui/static/images/rpay_horizental.png b/src/main/ui/static/images/rpay_horizental.png deleted file mode 100644 index 3af677129..000000000 Binary files a/src/main/ui/static/images/rpay_horizental.png and /dev/null differ diff --git a/src/main/ui/static/images/rpayplus_sign.png b/src/main/ui/static/images/rpayplus_sign.png new file mode 100644 index 000000000..4c53e791c Binary files /dev/null and b/src/main/ui/static/images/rpayplus_sign.png differ diff --git a/src/main/ui/static/images/rpayplus_sign_lg.png b/src/main/ui/static/images/rpayplus_sign_lg.png new file mode 100644 index 000000000..9b05b9b41 Binary files /dev/null and b/src/main/ui/static/images/rpayplus_sign_lg.png differ diff --git a/src/main/ui/static/invoice/templates/invoice_assistant.html b/src/main/ui/static/invoice/templates/invoice_assistant.html index 43420b87c..40315fcc0 100644 --- a/src/main/ui/static/invoice/templates/invoice_assistant.html +++ b/src/main/ui/static/invoice/templates/invoice_assistant.html @@ -206,6 +206,8 @@ uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/> + {{trade.order_id2}} @@ -237,7 +239,7 @@ -

- +
Nick Name Customer openId Amount(AUD)
+ + + {{customer.nickname}} + + + + {{customer.nickname}} + + + + {{customer.nickname}} + + + + {{customer.nickname}} + {{order.short_name}}(JD Pay | HF Pay + ng-click="params.channel='hf';doAnalysis(1)">HF Pay | + RPay +

diff --git a/src/main/ui/static/analysis/templates/settlement_transactions.html b/src/main/ui/static/analysis/templates/settlement_transactions.html index c1f522e0c..7f19fc00e 100644 --- a/src/main/ui/static/analysis/templates/settlement_transactions.html +++ b/src/main/ui/static/analysis/templates/settlement_transactions.html @@ -48,6 +48,11 @@ +
  • + + + +
  • diff --git a/src/main/ui/static/analysis/templates/trans_analysis.html b/src/main/ui/static/analysis/templates/trans_analysis.html index 17f6b602a..9fac48e1a 100644 --- a/src/main/ui/static/analysis/templates/trans_analysis.html +++ b/src/main/ui/static/analysis/templates/trans_analysis.html @@ -97,7 +97,9 @@ JD Pay | HF Pay + ng-click="params.channel='hf';doAnalysis(1)">HF Pay | + RPay +

    @@ -197,6 +199,17 @@ + +
    +
    +
    RPay+
    +
    + +
    +
    +
    + +
    +
    +
    RPay+
    +
    + +
    +
    +
    + diff --git a/src/main/ui/static/analysis/templates/transaction_amount_Analysis.html b/src/main/ui/static/analysis/templates/transaction_amount_Analysis.html index b23530dd5..5f4be2c4e 100644 --- a/src/main/ui/static/analysis/templates/transaction_amount_Analysis.html +++ b/src/main/ui/static/analysis/templates/transaction_amount_Analysis.html @@ -32,6 +32,8 @@ ng-click="params.channel='jd';loadTradeLogs()">JD Pay | HF Pay + RPay +

    diff --git a/src/main/ui/static/cms/cms.js b/src/main/ui/static/cms/cms.js index 3ab730034..156cda39b 100644 --- a/src/main/ui/static/cms/cms.js +++ b/src/main/ui/static/cms/cms.js @@ -4,6 +4,67 @@ define(['angular', 'uiRouter', 'static/commons/angular-ueditor'], function (angular) { 'use strict'; var app = angular.module('cms', ['ui.router','ng.uditor']); + var style = [ + { + "style_key":"settlement", + "style_value":"" + }, + { + "style_key":"home_select", + "style_value":"" + }, + { + "style_key":"activity_gray", + "style_value":"" + }, + { + "style_key":"activity_select", + "style_value":"" + }, + { + "style_key":"mess_gray", + "style_value":"" + }, + { + "style_key":"mess_select", + "style_value":"" + }, + { + "style_key":"my_select", + "style_value":"" + }, + { + "style_key":"transaction", + "style_value":"" + }, + { + "style_key":"statistics", + "style_value":"" + }, + { + "style_key":"marketing_account", + "style_value":"" + }, + { + "style_key":"usergroup", + "style_value":"" + }, + { + "style_key":"coupon", + "style_value":"" + }, + { + "style_key":"rpbill", + "style_value":"" + }, + { + "style_key":"invoice_assistant", + "style_value":"" + }, + { + "style_key":"home_gray", + "style_value":"" + }]; app.config(['$stateProvider', function ($stateProvider) { $stateProvider.state('cms', { url: '/cms', @@ -38,7 +99,41 @@ define(['angular', 'uiRouter', 'static/commons/angular-ueditor'], function (angu }).state('cms.phone_top_up', { url: '/phone_top_up', controller: 'CmsPhonetopupCtrl', - templateUrl: '/static/cms/templates/phone_top_up.html' + templateUrl: '/static/cms/templates/phone_top_up.html', + }).state('cms.app_style',{ + url: '/app_style', + controller: 'cmsAppStyleListCtrl', + templateUrl: '/static/cms/templates/app_style.html', + }).state('cms.app_style.app_style_preview',{ + url: '/{style_id}/preview', + controller: 'cmsAppStylePreviewCtrl', + templateUrl: '/static/cms/templates/app_style_preview.html', + resolve: { + appStyles: ['$http', '$stateParams', function ($http, $stateParams) { + return $http.get('/app/cms/app_style/style_group/' + $stateParams.style_id); + }] + } + }).state('cms.app_style.app_style_save',{ + url: '/save', + controller: 'cmsAppStyleSaveCtrl', + templateUrl: '/static/cms/templates/app_style_config.html', + resolve: { + style: function () { + return angular.copy(style); + } + } + }).state('cms.app_style.app_style_edit',{ + url: '/{style_id}/edit', + controller: 'cmsAppStyleEditCtrl', + templateUrl: '/static/cms/templates/app_style_config.html', + resolve: { + appStyles: ['$http', '$stateParams', function ($http, $stateParams) { + return $http.get('/app/cms/app_style/style_group/' + $stateParams.style_id); + }], + style: function () { + return angular.copy(style); + } + } }) }]); app.controller('cmsRootCtrl', ['$scope', function ($scope) { @@ -140,6 +235,142 @@ define(['angular', 'uiRouter', 'static/commons/angular-ueditor'], function (angu $scope.article = article.data; }]); + app.controller('cmsAppStyleListCtrl', ['$scope', '$http', '$uibModal', function ($scope, $http, $uibModal) { + $scope.pagination = {}; + $scope.appStyleGroupList = function (page) { + var params = $scope.queryParams || {}; + params.page = page || $scope.pagination.page || 1; + $http.get('/app/cms/app_style/style_group', {params: params}).then(function (resp) { + $scope.appStyleGroups = resp.data.data; + $scope.pagination = resp.data.pagination; + }) + }; + $scope.appStyleGroupList(1); + }]); + + app.controller('cmsAppStylePreviewCtrl', ['$scope', '$http', 'appStyles', function ($scope, $http, appStyles) { + $scope.appStyles = appStyles.data.data; + }]); + + app.controller('cmsAppStyleEditCtrl', ['$scope', '$http', '$state','commonDialog', 'appStyles', 'style', function ($scope, $http, $state, commonDialog, appStyles, style) { + $scope.ctrl = {sending: false, flag: false, originStyleId: angular.copy(appStyles.data.data[0].style_id)}; + $scope.entity={}; + $scope.style = angular.copy(style); + $scope.entity.appStyle = angular.copy(appStyles.data.data); + $scope.params = {style_id: angular.copy(appStyles.data.data[0].style_id)}; + $scope.appStyleList = function() { + var styleKeyStr = ""; + $scope.entity.appStyle.forEach(function(item){ + styleKeyStr += item.style_key + ","; + }); + $scope.style.forEach(function(item){ + if (styleKeyStr.indexOf(item.style_key) < 0) { + $scope.entity.appStyle.push({"style_key": item.style_key,"style_value":""}); + } + }) + }; + $scope.appStyleList(); + $scope.addSpecOption = function() { + $scope.entity.appStyle.push({}); + + }; + + // 删除规格选项 + $scope.delSpecOption = function(index) { + $scope.entity.appStyle.splice(index, 1); + + }; + + $scope.saveOneGroupAppStyle = function() { + if ($scope.params.style_id == "" || $scope.params.style_id == null) { + $scope.errmsg = "title不能为空"; + return; + } + var item = ""; + for (var i=0;i<$scope.entity.appStyle.length;i++) { + item = $scope.entity.appStyle[i]; + if (item.style_value == "" || item.style_value == null) { + $scope.errmsg = "value不能为空"; + return; + } + if (item.style_value.substr(0,4).toLowerCase() != "http" && + item.style_value.substr(0,5).toLowerCase() != "https") { + $scope.errmsg = "value必须以http或者https开头"; + return; + } + + } + $scope.ctrl.sending = true; + $http.put('/app/cms/app_style/style_group/' + $scope.params.style_id + '/style?originStyleId=' + $scope.ctrl.originStyleId, $scope.entity).then(function(){ + $scope.ctrl.sending = false; + $state.go('cms.app_style.app_style_preview',{style_id: $scope.params.style_id}); + }, function (resp) { + $scope.ctrl.sending = false; + $scope.errmsg = resp.data.message; + }) + } + $scope.toggleAppStyleIsValid = function(styleId) { + if (styleId) { + commonDialog.confirm({ + title: '确认操作', + content: '当前操作将发布title为:' +styleId +"的app图标,是否确认?" + }).then(function () { + $http.put('/app/cms/app_style/style_group/' + styleId).then(function () { + $state.reload(); + }) + }) + } + } + }]); + app.controller('cmsAppStyleSaveCtrl', ['$scope', '$http', '$state', 'style', function ($scope, $http, $state, style) { + $scope.ctrl = {sending: false, flag: true}; + $scope.entity={}; + $scope.entity.appStyle = angular.copy(style); + $scope.params = {style_id: ""}; + $scope.addSpecOption = function() { + $scope.entity.appStyle.push({}); + + }; + + // 删除规格选项 + $scope.delSpecOption = function(index) { + console.log(index) + $scope.entity.appStyle.splice(index, 1); + + }; + + $scope.saveOneGroupAppStyle = function() { + if ($scope.params.style_id == "" || $scope.params.style_id == null) { + $scope.errmsg = "title不能为空"; + return; + } + var item = ""; + for (var i=0;i<$scope.entity.appStyle.length;i++) { + item = $scope.entity.appStyle[i]; + if (item.style_value == "" || item.style_value == null) { + $scope.errmsg = "value不能为空"; + return; + } + if (item.style_value.substr(0,4).toLowerCase() != "http" && + item.style_value.substr(0,5).toLowerCase() != "https") { + $scope.errmsg = "value必须以http或者https开头"; + return; + } + + } + $scope.ctrl.sending = true; + $http.post('/app/cms/app_style/style_group?style_id=' + $scope.params.style_id, $scope.entity).then(function(){ + $scope.ctrl.sending = false; + $state.go('cms.app_style.app_style_preview', {style_id: $scope.params.style_id}); + }, function (resp) { + $scope.ctrl.sending = false; + $scope.errmsg = resp.data.message; + }) + }; + $scope.checkStyleValue = function () { + + } + }]); app.filter('topUpType', function () { return function (status) { switch (status + '') { diff --git a/src/main/ui/static/cms/templates/app_style.html b/src/main/ui/static/cms/templates/app_style.html new file mode 100644 index 000000000..613b0f19d --- /dev/null +++ b/src/main/ui/static/cms/templates/app_style.html @@ -0,0 +1,65 @@ +
    +
    +

    APP_STYLE

    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + +
    TitlePublishedOperation
    + + + + + + +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/cms/templates/app_style_config.html b/src/main/ui/static/cms/templates/app_style_config.html new file mode 100644 index 000000000..d934aa1f4 --- /dev/null +++ b/src/main/ui/static/cms/templates/app_style_config.html @@ -0,0 +1,67 @@ +
    +
    +

    APP_STYLE

    + +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + + + + + +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    KeyValue
    + + + +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/cms/templates/app_style_preview.html b/src/main/ui/static/cms/templates/app_style_preview.html new file mode 100644 index 000000000..08eda755d --- /dev/null +++ b/src/main/ui/static/cms/templates/app_style_preview.html @@ -0,0 +1,46 @@ +
    +
    +

    APP_STYLE

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + +
    TitleStyle_KeyStyle_Value
    +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/cms/templates/cms_root.html b/src/main/ui/static/cms/templates/cms_root.html index 69e7b8911..0040caa6b 100644 --- a/src/main/ui/static/cms/templates/cms_root.html +++ b/src/main/ui/static/cms/templates/cms_root.html @@ -26,6 +26,9 @@ +
    + App图标 +
    diff --git a/src/main/ui/static/commons/services/clearingDetailService.js b/src/main/ui/static/commons/services/clearingDetailService.js index bc2d39f35..fc23d7390 100644 --- a/src/main/ui/static/commons/services/clearingDetailService.js +++ b/src/main/ui/static/commons/services/clearingDetailService.js @@ -60,6 +60,8 @@ define(['../app','decimal'], function (app,Decimal) { return '/static/images/jd_sign_lg.png'; case 'hf': return '/static/images/hf_sign_lg.png'; + case 'Rpay': + return '/static/images/rpayplus_sign_lg.png'; } } }); diff --git a/src/main/ui/static/commons/templates/order_detail.html b/src/main/ui/static/commons/templates/order_detail.html index 748662a23..a73954b98 100644 --- a/src/main/ui/static/commons/templates/order_detail.html +++ b/src/main/ui/static/commons/templates/order_detail.html @@ -45,6 +45,8 @@ uib-tooltip="JD Pay" ng-if="order.channel=='jd'"/> + {{order.order_id}}
    Time Order IDClient Order ID Notify Url Success Http Code
    diff --git a/src/main/ui/static/payment/custom/templates/custom.html b/src/main/ui/static/payment/custom/templates/custom.html index 2a15a45f7..c3e911d21 100644 --- a/src/main/ui/static/payment/custom/templates/custom.html +++ b/src/main/ui/static/payment/custom/templates/custom.html @@ -101,6 +101,8 @@ uib-tooltip="JD Pay" ng-if="order.channel=='jd'"/> + {{order.order_id}}

    diff --git a/src/main/ui/static/payment/invoice/templates/invoice.html b/src/main/ui/static/payment/invoice/templates/invoice.html index cf06b87f7..c045936f1 100644 --- a/src/main/ui/static/payment/invoice/templates/invoice.html +++ b/src/main/ui/static/payment/invoice/templates/invoice.html @@ -200,6 +200,8 @@ uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/> + {{trade.order_id2}} @@ -211,7 +213,7 @@

    -

    -

    +

    {{trade.exchange_rate}}

    @@ -231,7 +233,7 @@ -

    - + diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index 794065363..bb47df893 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -3142,20 +3142,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }) }; $scope.applyRpaySubMerchantId = function () { - $http.post('/sys/partners/' + $scope.partner.client_moniker + '/registRpaySubMerchantId').then(function (resp) { - commonDialog.alert({ - title: 'Success', - content: 'Modify Rpay+ Sub Merchant ID successfully', - type: 'success' - }); - $state.reload(); - }, function (resp) { - commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) - }); - - - - + $uibModal.open({ + templateUrl: '/static/payment/partner/templates/apply_rpay_sub_merchant_id.html', + controller: 'applyRpaySubMerchantIdCtrl', + resolve: { + subMerchantInfo: function () { + return $scope.partner; + } + } + }).result.then(function () { + $scope.loadSubMerchantInfos(); + }) }; $scope.loadSubMerchantInfos(); }]); @@ -3203,10 +3200,57 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }); } }, function (resp) { - $scope.errmsg = resp.data.message; + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) }) } }]); + + app.controller('applyRpaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', 'businessStructuresMap','$filter', 'commonDialog','timezone', function ($scope, $http, $uibModal, $state, subMerchantInfo, businessStructuresMap,$filter, commonDialog,timezone) { + $scope.subMerchantInfo = angular.copy(subMerchantInfo); + $scope.business_structures = businessStructuresMap.configs(); + $scope.timezone = timezone.configs(); + + + $scope.saveRpayAppliy = function (form) { + var merchantInfo = {}; + $scope.errmsg = null; + if (form.$invalid) { + angular.forEach(form, function (item, key) { + if (key.indexOf('$') < 0) { + item.$dirty = true; + } + }); + return; + } + angular.forEach(form, function (item, key) { + if(item !=null) { + if(item.$name !=null) { + merchantInfo[key] = item.$modelValue; + } + } + }); + + $http.post('/sys/partners/' + $scope.subMerchantInfo.client_moniker + '/registRpaySubMerchantId', merchantInfo).then(function (resp) { + $scope.apply_sub_merchant_id = resp.data; + $scope.$close(); + if (subMerchantInfo.sub_merchant_id != null) { + commonDialog.alert({ + title: 'Success', + content: 'Modify Rpay+ Sub Merchant ID successfully', + type: 'success' + }); + $state.reload(); + } + }, function (resp) { + commonDialog.alert({ + title: 'Error', + content: resp.data.message, + type: 'error' + }); + }) + } + }]); + app.controller('permissionClientCtrl', ['$scope', '$http', '$uibModal', '$state', '$filter', 'commonDialog', function ($scope, $http, $uibModal, $state, $filter, commonDialog) { $scope.clientPermission = {client_moniker:$scope.partner.client_moniker}; $scope.loadPermissionList = function () { diff --git a/src/main/ui/static/payment/partner/partner.js b/src/main/ui/static/payment/partner/partner.js index 275b1190e..7096890c6 100644 --- a/src/main/ui/static/payment/partner/partner.js +++ b/src/main/ui/static/payment/partner/partner.js @@ -70,6 +70,13 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], funct $scope.partner = partner.data; $scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo'; + $scope.getMerchantLocation = function () { + $http.get('/sys/partners/' + $scope.partner.client_moniker + '/location').then(function (resp) { + $scope.merchant_location = resp.data; + }); + }; + $scope.getMerchantLocation(); + $scope.uploadLogo = function (file) { if (file != null) { if (file.size > 1 * 1024 * 1024) { @@ -553,7 +560,7 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], funct }; }]); - app.controller('clientPaymentInfoCtrl', ['$scope', '$http', 'commonDialog', function ($scope, $http, commonDialog) { + app.controller('clientPaymentInfoCtrl', ['$scope', '$http', '$state', 'commonDialog', function ($scope, $http, $state, commonDialog) { $scope.paymentInfo = $scope.partner; $scope.old_customer_surcharge_rate = angular.copy($scope.partner.customer_surcharge_rate); $scope.qrConfig = {currency: 'AUD'}; @@ -822,7 +829,25 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], funct $scope.bankshow = false; }; - + // 新增需求,商户端刷新支付秘钥 + $scope.refreshCredential = function () { + commonDialog.confirm({ + title: 'Warning', + content: 'Refresh Credential will expire the current one, ' + + 'which will cause the current payment service disabled. ' + + 'Are you sure going on?' + }).then(function () { + $http.put('/sys/partners/' + $scope.partner.client_moniker + '/credential_code').then(function () { + $state.reload(); + }, function (resp) { + commonDialog.alert({ + title: 'Error', + content: resp.data.message, + type: 'error' + }) + }) + }) + }; }]); app.controller('clientPaymentMaterialCtrl', ['$scope', '$http', 'partner', function ($scope, $http, partner) { diff --git a/src/main/ui/static/payment/partner/templates/apply_rpay_sub_merchant_id.html b/src/main/ui/static/payment/partner/templates/apply_rpay_sub_merchant_id.html new file mode 100644 index 000000000..f7d130c75 --- /dev/null +++ b/src/main/ui/static/payment/partner/templates/apply_rpay_sub_merchant_id.html @@ -0,0 +1,238 @@ +
    +
    +
    +
    +
    +
    Apply Rpay+ Sub Merchant Id
    +
    +
    +
    + +
    + +
    +

    Required Field

    +

    Length is more than 50

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +

    Length is more than 50

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +

    Length is more than 50

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

    Required Field

    +

    Length is more than 256

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

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

    Required Field

    +
    +
    + +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +

    Length is more than 50

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +
    +
    +
    + +
    + +
    + +
    +

    Required Field

    +

    Length is more than 10

    +
    +
    +
    + +
    + +
    + +
    +
    + + + + + +
    +
    +
    + + + + + + + + +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/payment/partner/templates/apply_sub_merchant_id.html b/src/main/ui/static/payment/partner/templates/apply_wx_sub_merchant_id.html similarity index 99% rename from src/main/ui/static/payment/partner/templates/apply_sub_merchant_id.html rename to src/main/ui/static/payment/partner/templates/apply_wx_sub_merchant_id.html index 34b94f7d4..58b227e73 100644 --- a/src/main/ui/static/payment/partner/templates/apply_sub_merchant_id.html +++ b/src/main/ui/static/payment/partner/templates/apply_wx_sub_merchant_id.html @@ -3,7 +3,7 @@
    -
    Apply Sub Merchant Id
    +
    Apply Wechat Sub Merchant Id
    + +
    +
    Location + + +
    +
    +
    + +
    +
    +
    diff --git a/src/main/ui/static/payment/partner/templates/client_payment_info.html b/src/main/ui/static/payment/partner/templates/client_payment_info.html index 534d6ca61..ad9158a14 100644 --- a/src/main/ui/static/payment/partner/templates/client_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/client_payment_info.html @@ -87,7 +87,15 @@
    -

    +

    + + + + +

    diff --git a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html index f1e00b160..b67d76a26 100644 --- a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html +++ b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html @@ -179,6 +179,7 @@ Rate Name Rate Value + Transaction Fee Active Time Expire Time Clean Days @@ -193,6 +194,7 @@ ng-class="{'text-bold':rate.current,'success':rate.active}"> + T+{{rate.clean_days}} diff --git a/src/main/ui/static/payment/partner/templates/partner_new_rate.html b/src/main/ui/static/payment/partner/templates/partner_new_rate.html index c93460d5f..cf41ab976 100644 --- a/src/main/ui/static/payment/partner/templates/partner_new_rate.html +++ b/src/main/ui/static/payment/partner/templates/partner_new_rate.html @@ -88,30 +88,6 @@
    -
    - -
    -
    - -
    %
    -
    -
    -
    - No more than 2.2% -
    -
    - No less than 0.6% -
    -
    - Required Field -
    -
    - -
    -
    -
    @@ -184,6 +160,29 @@
    + +
    + +
    +
    + + +
    +
    +
    + No less than 0 +
    +
    + Required Field +
    +
    + +
    +
    + +
    diff --git a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html index 0055cf480..630f9d6ab 100644 --- a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html +++ b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html @@ -85,7 +85,9 @@ JDpay | HFpay + ng-click="params.channel='HF';loadTradeLogs(1)">HFpay | + RPay +

    @@ -185,6 +187,7 @@ + {{trade.order_id}} @@ -195,7 +198,8 @@ - + + - diff --git a/src/main/ui/static/payment/partner/templates/rate_config_dialog.html b/src/main/ui/static/payment/partner/templates/rate_config_dialog.html index 421be18ab..d92b9ecf6 100644 --- a/src/main/ui/static/payment/partner/templates/rate_config_dialog.html +++ b/src/main/ui/static/payment/partner/templates/rate_config_dialog.html @@ -35,6 +35,31 @@
    + +
    + +
    +
    + + +
    +
    + + + +
    + No less than 0 +
    +
    + Required Field +
    +
    + +
    +
    +
    diff --git a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html index 66ebd8403..8deec83d1 100644 --- a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html +++ b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html @@ -99,7 +99,7 @@ Rpay+ Sub Merchant Id : {{partner.rpay_enterprise_id}} -
    @@ -296,6 +296,8 @@ uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/> + {{trade.order_id2}} @@ -343,7 +345,7 @@ -

    - + diff --git a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html index 8671dcfa1..527e66e50 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html @@ -7,7 +7,7 @@ diff --git a/src/main/ui/static/payment/tradelog/templates/partner_trade_detail_edit.html b/src/main/ui/static/payment/tradelog/templates/partner_trade_detail_edit.html index 978617150..d91c3e058 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_trade_detail_edit.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_trade_detail_edit.html @@ -98,7 +98,7 @@ -
    +

    diff --git a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html index e093dd66e..b69d79e45 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html @@ -96,6 +96,8 @@ ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay | HF Pay + RPay+

    @@ -322,6 +324,7 @@ AlipayOnline + {{trade.order_id}} @@ -333,7 +336,8 @@ - + + - diff --git a/src/main/ui/static/payment/tradelog/templates/trade_logs.html b/src/main/ui/static/payment/tradelog/templates/trade_logs.html index 7dc4e3a21..977125376 100644 --- a/src/main/ui/static/payment/tradelog/templates/trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/trade_logs.html @@ -133,7 +133,9 @@ JD Pay | HF Pay + ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay | + RPay +

    @@ -351,6 +353,8 @@ uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/> + {{trade.order_id}} @@ -361,7 +365,8 @@ - + + - diff --git a/src/main/ui/static/payment/vipcustomer/templates/vipcustomer_detail.html b/src/main/ui/static/payment/vipcustomer/templates/vipcustomer_detail.html index 8b0e25e48..23c9510c8 100644 --- a/src/main/ui/static/payment/vipcustomer/templates/vipcustomer_detail.html +++ b/src/main/ui/static/payment/vipcustomer/templates/vipcustomer_detail.html @@ -126,7 +126,8 @@ - + + - diff --git a/src/main/ui/static/risk/templates/attention_merchants.html b/src/main/ui/static/risk/templates/attention_merchants.html index b618f4f6b..d3ddfdf66 100644 --- a/src/main/ui/static/risk/templates/attention_merchants.html +++ b/src/main/ui/static/risk/templates/attention_merchants.html @@ -67,7 +67,7 @@ {{client.bank_account_no}} {{client.contact_person}} {{client.contact_phone}} - {{client.last_update_date}} + {{client.creation_date}} {{client.remark}}