diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java
index b59deeae7..b0138c63c 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java
@@ -160,4 +160,7 @@ public interface RetailAppService {
JSONObject ctripCouponInfo(JSONObject device,String coupon_id);
+ JSONObject getCouponCusCouponLog(String client_moniker, AppQueryBean appQueryBean);
+
+ void saveCouponAccuessLog(int client_id, String coupon_id);
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
index 90341fb31..371db155a 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
@@ -172,6 +172,10 @@ public class RetailAppServiceImp implements RetailAppService {
private ClearingLogMapper clearingLogMapper;
@Resource
private CustomerServiceService customerServiceService;
+ @Resource
+ private CouponAccuessLogMapper couponAccuessLogMapper;
+ @Resource
+ private CouponValidateService couponValidateService;
private Map senderMap = new HashMap<>();
private final String fileName[] = { "client_bank_file", "client_id_file", "client_company_file" };
@@ -447,8 +451,50 @@ public class RetailAppServiceImp implements RetailAppService {
@Override
public JSONObject ctripCouponInfo(JSONObject device, String coupon_id) {
- return couponVerificationService.ctripCouponInfo(coupon_id,device.getIntValue("client_id"));
+ return couponVerificationService.ctripCouponInfo(coupon_id,device.getIntValue("client_id"), true);
+
+ }
+ @Override
+ public JSONObject getCouponCusCouponLog(String client_moniker, AppQueryBean appQueryBean) {
+ JSONObject client = clientMapper.findClientByMoniker(client_moniker);
+ if (client == null) {
+ throw new BadRequestException("Partner not exists");
+ }
+ PageList cusCouponLogs = couponAccuessLogMapper.getCouponAccuessLog(
+ client.getIntValue("client_id"), new PageBounds(appQueryBean.getPage(), appQueryBean.getLimit(), Order.formString("creation_date.desc")));
+ HashMap couponMap = new HashMap<>();
+ for(JSONObject cusCouponLog : cusCouponLogs) {
+ cusCouponLog.put("client_moniker", client_moniker);
+ if (couponMap.containsKey(cusCouponLog.getString("coupon_id"))) {
+ cusCouponLog.put("coupon", couponMap.get(cusCouponLog.getString("coupon_id")));
+ continue;
+ }
+ JSONObject coupon = couponValidateService.ctripCouponInfo(cusCouponLog.getString("coupon_id"), cusCouponLog.getIntValue("client_id"), false);
+ couponMap.put(cusCouponLog.getString("coupon_id"), coupon);
+ cusCouponLog.put("coupon", coupon);
+ }
+ return PageListUtils.buildPageListResult(cusCouponLogs);
+ }
+
+ @Override
+ public void saveCouponAccuessLog(int client_id, String coupon_id) {
+ JSONObject client = clientMapper.findClient(client_id);
+ if (client == null) {
+ throw new BadRequestException("Partner not exists");
+ }
+ JSONObject couponAccuessLog = new JSONObject();
+ Date date = new Date();
+ couponAccuessLog.put("client_id", client_id);
+ couponAccuessLog.put("order_id", "非平台订单");
+ couponAccuessLog.put("coupon_id", coupon_id);
+ couponAccuessLog.put("customer_openid", "非平台订单");
+ couponAccuessLog.put("coupon_deal_amount", 0);
+ couponAccuessLog.put("currency", "AUD");
+ couponAccuessLog.put("creation_date", date);
+ couponAccuessLog.put("last_update_date", date);
+ couponAccuessLog.put("is_valid", 1);
+ couponAccuessLogMapper.save(couponAccuessLog);
}
@Override
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java
index 56bd28d16..003e7b8ca 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java
@@ -564,4 +564,14 @@ public class RetailAppController {
return retailAppService.ctripCouponInfo(device,couponId);
}
+ @RequestMapping(value = "/cus/coupon_accuess_log/{client_moniker}", method = RequestMethod.GET)
+ public JSONObject getCouponLogByClientMoniker(@PathVariable String client_moniker, AppQueryBean appQueryBean) {
+ return retailAppService.getCouponCusCouponLog(client_moniker, appQueryBean);
+ }
+
+ @RequestMapping(value = "/cus/coupon_accuess_log/{coupon_id}", method = RequestMethod.POST)
+ public void saveCouponAccuessLog(@PathVariable String coupon_id, @RequestParam int client_id) {
+ retailAppService.saveCouponAccuessLog(client_id, coupon_id);
+ }
+
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java
index 1d498a083..5aecb73bf 100644
--- a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java
+++ b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java
@@ -4,6 +4,7 @@ import au.com.royalpay.payment.core.events.AfterPaymentFinishEvent;
import au.com.royalpay.payment.manage.customers.core.CustomerPaymentInfoService;
import au.com.royalpay.payment.manage.mappers.system.SysCustomerPaymentInfoMapper;
+import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
@@ -21,6 +22,8 @@ public class AfterPaymentFinishListener implements ApplicationListener clientIds = clientMapper.findByhfPayUrlNotNull();
+ clientIds.forEach(dbResult -> {
+ String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/" + dbResult.getString("client_moniker") + "/jump/pc");
+ MpWechatApi api = mpWechatApiProvider.getNewPaymentApi();
+ dbResult.put("hf_pay_url", api.registerShortUrl(longUrl));
+ clientMapper.update(dbResult);
+ });
+ return "ok";
+ }
+}
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 49f0e0b42..dfbeebe28 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
@@ -13,10 +13,7 @@ import au.com.royalpay.payment.manage.appclient.core.RetailAppService;
import au.com.royalpay.payment.manage.dev.bean.AliExcel;
import au.com.royalpay.payment.manage.dev.bean.Message;
import au.com.royalpay.payment.manage.dev.bean.SendWechatMessage;
-import au.com.royalpay.payment.manage.dev.core.AliforexcelService;
-import au.com.royalpay.payment.manage.dev.core.HfClearAmountService;
-import au.com.royalpay.payment.manage.dev.core.NewpartnerService;
-import au.com.royalpay.payment.manage.dev.core.WechatMessageService;
+import au.com.royalpay.payment.manage.dev.core.*;
import au.com.royalpay.payment.manage.mappers.customers.CustomerEncourageMoneyUseLogMapper;
import au.com.royalpay.payment.manage.mappers.log.NotifyErrorLogMapper;
import au.com.royalpay.payment.manage.mappers.payment.OrderMapper;
@@ -110,6 +107,8 @@ public class TestController implements ApplicationEventPublisherAware {
private AliforexcelService aliforexcelService;
@Resource
private HfClearAmountService hfClearAmountService;
+ @Resource
+ private HfUpdateService hfUpdateService;
@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 {
@@ -394,7 +393,12 @@ public class TestController implements ApplicationEventPublisherAware {
}
@ManagerMapping(value = "/hfClearAmount", method = RequestMethod.GET, role = ManagerRole.DEVELOPER)
- public JSONObject hfClearAmount(@RequestParam String datefrom, @RequestParam String dateto) {
+ public JSONObject hfUpdate(@RequestParam String datefrom, @RequestParam String dateto) {
return hfClearAmountService.hfjsonobject(dateto,datefrom);
}
+
+ @ManagerMapping(value = "/hfUpdate", method = RequestMethod.GET, role = ManagerRole.DEVELOPER)
+ public String hfClearAmount() {
+ return hfUpdateService.updateStatus();
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/CouponAccuessLogMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/CouponAccuessLogMapper.java
index e4e593ccc..6aa29ddaa 100644
--- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/CouponAccuessLogMapper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/CouponAccuessLogMapper.java
@@ -2,6 +2,8 @@ package au.com.royalpay.payment.manage.mappers.log;
import java.util.List;
+import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
+import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.ibatis.annotations.Param;
import com.alibaba.fastjson.JSONObject;
@@ -26,4 +28,7 @@ public interface CouponAccuessLogMapper {
@AutoSql(type = SqlType.SELECT)
List findCouponByOrderId(@Param("order_id") String order_id);
+
+ @AutoSql(type = SqlType.SELECT)
+ PageList getCouponAccuessLog(@Param("client_id")int client_id, PageBounds pageBounds);
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.java
index f8e8db188..60542974a 100644
--- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.java
@@ -76,4 +76,6 @@ public interface ClientAccountMapper {
List listNullUnionIdAccounts();
List query(JSONObject params);
+
+ List partnerAndSubPartnerAccounts(@Param("client_id") int clientId);
}
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 a99bd852c..281ef65c3 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
@@ -4,6 +4,7 @@ import cn.yixblog.support.mybatis.autosql.annotations.AdvanceSelect;
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
@@ -94,4 +95,6 @@ public interface ClientMapper {
@AutoSql(type = SqlType.SELECT)
JSONObject findByWechatInstitutionMerchantId(@Param("wechat_institution_merchant_id") String wechat_institution_merchant_id);
+ List findByhfPayUrlNotNull();
+
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManagerMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManagerMapper.java
index 8881b2a62..5f3af081a 100644
--- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManagerMapper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManagerMapper.java
@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
import java.util.List;
@@ -63,4 +64,7 @@ public interface ManagerMapper {
List listOpenIdByRole(@Param("mask") int mask);
List listServants(@Param("mask") int mask);
+
+ @Select("select email from sys_managers where is_valid=1 AND role & 256 > 0 AND email IS NOT NULL")
+ List listDevManager();
}
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 79e5d760b..368785663 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
@@ -326,4 +326,8 @@ public interface ClientManager {
@Transactional
void switchHfLink(JSONObject manager, String clientMoniker,boolean allow);
+
+ void sendHfEmailNotice(JSONObject order);
+
+ void updateAllPartnerPassword(String clientMoniker, List emails);
}
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 d7c68ed6a..e0b1a47da 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
@@ -154,13 +154,8 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URISyntaxException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashSet;
+import java.util.*;
import java.util.List;
-import java.util.Objects;
-import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
@@ -416,6 +411,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (audit_logs != null && !audit_logs.isEmpty()) {
client.put("audit_logs", audit_logs);
}
+
+ //HF支付链接二维码
+ if (client.getString("hf_pay_url") != null) {
+ client.put("hfQrcodeUrl", QRCodeUtils.qrcodeImageCode(client.getString("hf_pay_url"), 200, false));
+ }
return client;
}
@@ -886,7 +886,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (StringUtils.isEmpty(client.getString("sub_merchant_id"))) {
throw new BadRequestException("Sub Merchant ID Can't be null ");
}
- String username = clientMoniker + client.getString("sub_merchant_id");
+ String username = clientMoniker;
boolean duplicated = true;
String pwd = RandomStringUtils.random(8, true, true);
while (duplicated) {
@@ -899,7 +899,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
newAccount(clientMoniker, account, manager, 1);
duplicated = false;
} catch (Exception e) {
- username += "1";
+ username += "0";
}
}
sendInitEmail(client, username, pwd);
@@ -959,9 +959,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
ctx.setVariable("client_moniker", client.getString("client_moniker"));
ctx.setVariable("contact_person", client.getString("contact_person"));
ctx.setVariable("credential_code", client.getString("credential_code"));
+
final String content = thymeleaf.process("mail/new_client_notice", ctx);
// final String content = VelocityEngineUtils.mergeTemplateIntoString(null, "mail/new_client_notice.vm",
// "utf-8", model);
+ ctx.setVariable("password", "*****");
+ final String contentBd = thymeleaf.process("mail/new_client_notice", ctx);
final String mailTo = client.getString("contact_email");
if (StringUtils.isEmpty(mailTo)) {
throw new EmailException("Client Contact Email is invalid");
@@ -977,8 +980,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Override
public void run() {
try {
- String emailId = mailService.sendEmail("Your RoyalPay Cross-border Payment has been set up", mailTo,
- emails.isEmpty() ? "" : StringUtils.join(emails, ","), content);
+ String emailId = mailService.sendEmail("Your RoyalPay Cross-border Payment has been set up", mailTo, "", content);
+ mailService.sendEmail("Your RoyalPay Cross-border Payment has been set up", emails.isEmpty() ? "" : StringUtils.join(emails, ","),
+ "", contentBd);
JSONObject clientUpdate = new JSONObject();
clientUpdate.put("client_id", client.getIntValue("client_id"));
clientUpdate.put("approve_email_send", 3);
@@ -1175,6 +1179,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) {
throw new NotFoundException("Client Not Exists");
}
+ if (channel.equals("hf") && !allow && client.getBoolean("enable_hf_email_notice")) {
+ clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_hf_email_notice", allow));
+ }
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_" + channel.toLowerCase(), allow));
logger.info(manager.getString("display_name") + "(" + manager.getString("manager_id") + ") switched client " + clientMoniker + " channel "
+ channel + " to " + allow);
@@ -3754,9 +3761,62 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
+ @Override
+ public void sendHfEmailNotice(JSONObject order) {
+ JSONObject client = clientMapper.findClient(order.getIntValue("client_id"));
+ JSONObject clientConfig = clientConfigMapper.find(order.getIntValue("client_id"));
+ if (client == null || clientConfig == null) {
+ return;
+ }
+ if (client.getString("contact_email") == null ||
+ !clientConfig.getBoolean("enable_hf_email_notice")) {
+ return;
+ }
+ Context ctx = new Context();
+ ctx.setVariable("img_url", PlatformEnvironment.getEnv().concatUrl("/static/images/royalpay_logo.png"));
+ ctx.setVariable("name", client.getString("contact_person"));
+ ctx.setVariable("order_id", order.getString("order_id"));
+ ctx.setVariable("amount", order.getString("total_amount"));
+ ctx.setVariable("time", order.getString("create_time"));
+ final String content = thymeleaf.process( "mail/hf_email_notice", ctx);
+ final String mailTo = client.getString("contact_email");
+ if (StringUtils.isEmpty(mailTo)) {
+ throw new EmailException("Client Contact Email is invalid");
+ }
+ new Thread(() -> {
+ try {
+ mailService.sendEmail("你刚刚有一笔到账信息", mailTo, "", content);
+ } catch (Exception ignored) {
+ logger.error("邮件发送失败", ignored);
+ }
+ }).start();
+ }
+
+ @Override
+ public void updateAllPartnerPassword(String clientMoniker, List emails) {
+ JSONObject client = getClientInfoByMoniker(clientMoniker);
+ if (client == null) {
+ throw new InvalidShortIdException();
+ }
+ List partners = clientAccountMapper.partnerAndSubPartnerAccounts(client.getIntValue("client_id"));
+ partners.stream().forEach(partner -> {
+ String pwd = RandomStringUtils.random(8, true, true);
+ String salt = PasswordUtils.newSalt();
+ String pwdHash = PasswordUtils.hashPwd(pwd, salt);
+ partner.put("salt", salt);
+ partner.put("password_hash", pwdHash);
+ partner.put("password_aes", PasswordUtils.encryptAESPwd(pwd));
+ deviceManager.deviceOffline(partner.getString("account_id"));
+ clientAccountMapper.update(partner);
+ signInAccountService.clearAccountCache(partner.getString("account_id"));
+ partner.put("password", pwd);
+ });
+ sendTestMerchantPassword(partners, emails);
+ }
+
@Override
public String getShortLink(String clientMoniker) {
- String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/" + clientMoniker + "/jump");
+ String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/" + clientMoniker + "/jump/pc");
MpWechatApi api = mpWechatApiProvider.getNewPaymentApi();
return api.registerShortUrl(longUrl);
}
@@ -3782,4 +3842,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
+ private void sendTestMerchantPassword(List accounts, List emails) {
+ Context ctx = new Context();
+ ctx.setVariable("accounts", accounts);
+ final String content = thymeleaf.process( "mail/test_merchant_password", ctx);
+ new Thread(() -> {
+ try {
+ mailService.sendEmail("测试商户账户已更新", emails.isEmpty() ? "" : StringUtils.join(emails, ","), "", content);
+ } catch (Exception ignored) {
+ logger.error("邮件发送失败", ignored);
+ }
+ }).start();
+ }
+
}
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 5958044d2..66a0af5a9 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
@@ -284,12 +284,12 @@ public class PartnerManageController {
return tradeLogService.listOrderRefunds(orderId, null);
}
- @ManagerMapping(value = "/{clientMoniker}/accounts", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT, ManagerRole.DIRECTOR})
+ @ManagerMapping(value = "/{clientMoniker}/accounts", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT, ManagerRole.DIRECTOR,ManagerRole.DEVELOPER})
public List partnerAccounts(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.listAccounts(manager, clientMoniker);
}
- @ManagerMapping(value = "/{clientMoniker}/accounts", method = RequestMethod.POST, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.BD_USER, ManagerRole.SERVANT})
+ @ManagerMapping(value = "/{clientMoniker}/accounts", method = RequestMethod.POST, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.DEVELOPER})
public JSONObject addPartnerAccount(@RequestBody @Valid NewAccountBean account, Errors errors, @PathVariable String clientMoniker,
@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
HttpUtils.handleValidErrors(errors);
@@ -546,4 +546,9 @@ public class PartnerManageController {
clientManager.switchHfLink(manager, clientMoniker, pass.getBooleanValue("allow"));
}
+ @ManagerMapping(value = "/{clientMoniker}/hf/email_notice", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER})
+ 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"));
+ }
+
}
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
new file mode 100644
index 000000000..88a81a0d1
--- /dev/null
+++ b/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java
@@ -0,0 +1,43 @@
+package au.com.royalpay.payment.manage.task;
+
+import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
+import au.com.royalpay.payment.manage.merchants.core.ClientManager;
+import au.com.royalpay.payment.tools.scheduler.SynchronizedScheduler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+@Component
+@ConditionalOnProperty(value = "app.run-tasks", havingValue = "false")
+public class UpdatePartnerPasswordTask {
+ private Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private ClientManager clientManager;
+ @Resource
+ private SynchronizedScheduler synchronizedScheduler;
+ @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";
+
+ @Scheduled(cron = "0 0 9 28 * ?")
+ public void resetPartnerPassword() {
+ synchronizedScheduler.executeProcess("manage_task:resetPartnerPassword", 120_000, () -> {
+ final List emails = managerMapper.listDevManager();
+ 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/resources/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.xml
index 5e5ccbac1..c35be4b34 100644
--- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.xml
+++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientAccountMapper.xml
@@ -17,4 +17,10 @@
+
\ No newline at end of file
diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml
index 24bfc3a90..64cf17945 100644
--- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml
+++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml
@@ -6,23 +6,24 @@
WHERE is_valid=1 and (approve_result = 1 or approve_result = 2)
+
diff --git a/src/main/ui/static/payment/partner/templates/partner_accounts.html b/src/main/ui/static/payment/partner/templates/partner_accounts.html
index 0e357f12d..d41819a94 100644
--- a/src/main/ui/static/payment/partner/templates/partner_accounts.html
+++ b/src/main/ui/static/payment/partner/templates/partner_accounts.html
@@ -1,7 +1,7 @@
-
@@ -9,7 +9,7 @@
-
There is no accounts for this partner, Create One
+
There is no accounts for this partner, Create One
diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html
index 2ec731a81..80558c3a0 100644
--- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html
+++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html
@@ -331,6 +331,19 @@
{{paymentInfo.hf_pay_url}}
+
+
diff --git a/src/main/ui/static/templates/hf/gateway_payment.js b/src/main/ui/static/templates/hf/gateway_payment.js
index f18730df8..044c28dfb 100644
--- a/src/main/ui/static/templates/hf/gateway_payment.js
+++ b/src/main/ui/static/templates/hf/gateway_payment.js
@@ -1,17 +1,16 @@
$("#bank-li").hide();
-$("#bankCard-li").hide();
var currentIndex = 0;
$(".main .main-left ul li.tab-item").click(function () {
+ $("#qrode").hide();
+ $("#payment-form").show();
var selectedIndex = $(this).index();
$(this).addClass("change-color").siblings().removeClass("change-color");
$(this).children(".s1").addClass("s1-change-color");
$(this).siblings().children(".s1").removeClass("s1-change-color");
if (selectedIndex == 2) {
$("#bank-li").show();
- $("#bankCard-li").show();
} else {
$("#bank-li").hide();
- $("#bankCard-li").hide();
}
});
@@ -23,8 +22,81 @@ $("#modal-close").click(function () {
var select = $("select#bank-select,#product-category-select");
if (select.val() != "")
select.prev().hide();
-select.bind("change", function() {
- if($(this).val() != "") {
+select.bind("change", function () {
+ if ($(this).val() != "") {
$(this).prev().hide();
}
-})
+});
+var bankList = [
+ {label:'招商银行',value:'CMB'},
+ {label:'中国工商银行',value:'ICBC'},
+ {label:'中国农业银行',value:'ABC'},
+ {label:'中国建设银行',value:'CCB'},
+ {label:'中国银行',value:'BOC'},
+ {label:'浦发银行',value:'SPDB'},
+ {label:'中国交通银行',value:'BCOM'},
+ {label:'中国民生银行',value:'CMBC'},
+ {label:'广东发展银行',value:'GDB'},
+ {label:'中信银行',value:'CITIC'},
+ {label:'华夏银行',value:'HXB'},
+ {label:'上海农村商业银行',value:'SRCB'},
+ {label:'中国邮政储蓄银行',value:'PSBC'},
+ {label:'北京银行',value:'BOB'},
+ {label:'渤海银行',value:'CBHB'},
+ {label:'北京农商银行',value:'BJRCB'},
+ {label:'南京银行',value:'NJCB'},
+ {label:'中国光大银行',value:'CEB'},
+ {label:'浙商银行',value:'CZB'},
+ {label:'兴业银行',value:'CIB'},
+ {label:'杭州银行',value:'HZB'},
+ {label:'平安银行',value:'PAB'},
+ {label:'上海银行',value:'SHB'},
+];
+var productList = [
+ {label:'护肤品',value:'100003'},
+ {label:'洗发护发',value:'100004'},
+ {label:'身体护理',value:'100005'},
+ {label:'口腔护理',value:'100006'},
+ {label:'包包',value:'100007'},
+ {label:'女装',value:'100008'},
+ {label:'男装',value:'100009'},
+ {label:'童装',value:'100010'},
+ {label:'内衣',value:'100011'},
+ {label:'睡衣',value:'100012'},
+ {label:'袜品',value:'100013'},
+ {label:'配饰',value:'100014'},
+ {label:'香水',value:'100015'},
+ {label:'彩妆',value:'100016'},
+ {label:'奶粉',value:'100017'},
+ {label:'母婴营养保健',value:'100018'},
+ {label:'婴儿辅食',value:'100019'},
+ {label:'尿裤纸巾',value:'100020'},
+ {label:'男鞋',value:'100021'},
+ {label:'女鞋',value:'100022'},
+ {label:'运动鞋',value:'100023'},
+ {label:'户外鞋',value:'100024'},
+ {label:'运动服',value:'100025'},
+ {label:'休闲服装',value:'100026'},
+ {label:'家纺/床品',value:'100027'},
+ {label:'生活日用',value:'100028'},
+ {label:'厨房电器',value:'100029'},
+ {label:'家装软饰',value:'100030'},
+ {label:'生活电器',value:'100031'},
+ {label:'手机',value:'100032'},
+ {label:'手机配件',value:'100033'},
+ {label:'数码相机',value:'100034'},
+ {label:'单反相机',value:'100035'},
+ {label:'摄像机',value:'100036'},
+ {label:'镜头',value:'100037'},
+ {label:'耳机/耳麦',value:'100038'},
+ {label:'音箱/音响',value:'100039'},
+ {label:'数码配件',value:'100040'},
+ {label:'智能手环',value:'100041'},
+ {label:'影音娱乐',value:'100042'},
+ {label:'笔记本',value:'100043'},
+ {label:'进口食品',value:'100044'},
+ {label:'休闲食品',value:'100045'},
+ {label:'营养品',value:'100046'},
+ {label:'地方特产',value:'100047'}
+];
+