parent
99487530a3
commit
f9f58012e4
@ -0,0 +1,19 @@
|
||||
package au.com.royalpay.payment.manage.mappers.system;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||
|
||||
/**
|
||||
* Create by yixian at 2017-12-13 19:10
|
||||
*/
|
||||
@AutoMapper(tablename = "sys_mail_send", pkName = "id")
|
||||
public interface MailSendMapper {
|
||||
@AutoSql(type = SqlType.INSERT)
|
||||
void save(JSONObject record);
|
||||
|
||||
@AutoSql(type = SqlType.UPDATE)
|
||||
void update(JSONObject record);
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package au.com.royalpay.payment.manage.system.core;
|
||||
|
||||
|
||||
import au.com.royalpay.payment.tools.mail.SendMail;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
public interface MailService {
|
||||
|
||||
void dealNotify(String nofityString) throws Exception;
|
||||
|
||||
JSONObject sendMail(SendMail sendMail);
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package au.com.royalpay.payment.manage.system.core.impl;
|
||||
|
||||
import au.com.royalpay.payment.manage.mappers.system.MailSendMapper;
|
||||
import au.com.royalpay.payment.manage.system.core.MailService;
|
||||
import au.com.royalpay.payment.tools.mail.MailGunClient;
|
||||
import au.com.royalpay.payment.tools.mail.SendMail;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.net.URLDecoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class MailServiceImpl implements MailService {
|
||||
Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Resource
|
||||
private MailSendMapper mailSendMapper;
|
||||
|
||||
@Resource
|
||||
private MailGunClient mailGunClient;
|
||||
|
||||
@Override
|
||||
public void dealNotify(String nofityString) throws Exception {
|
||||
String dd = URLDecoder.decode(nofityString, "UTF-8");
|
||||
Map<String, String> mailgunNotify = getQueryMap(nofityString);
|
||||
String myData = mailgunNotify.get("my-custom-data");
|
||||
String recipient = mailgunNotify.get("recipient");
|
||||
if (StringUtils.isNotEmpty(myData) && StringUtils.isNotEmpty(recipient)) {
|
||||
JSONObject tmpJSONObject = JSONObject.parseObject(myData);
|
||||
String[] mailAddresses = recipient.split(",");
|
||||
for (String mailAddress : mailAddresses) {
|
||||
JSONObject record = new JSONObject();
|
||||
record.put("id", tmpJSONObject.getString("id"));
|
||||
record.put("mail_address", mailAddress);
|
||||
record.put("status", 1);
|
||||
mailSendMapper.update(record);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject sendMail(SendMail sendMail) {
|
||||
return mailGunClient.sendMail(sendMail);
|
||||
}
|
||||
|
||||
public Map<String, String> getQueryMap(String query) {
|
||||
String[] params = query.split("&");
|
||||
Map<String, String> map = new HashMap<>();
|
||||
for (String param : params) {
|
||||
String [] tmpArr= param.split("=");
|
||||
if(tmpArr.length<2){
|
||||
continue;
|
||||
}
|
||||
map.put(tmpArr[0], tmpArr[1]);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
@ -1,22 +1,24 @@
|
||||
package au.com.royalpay.payment.manage.system.web;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import au.com.royalpay.payment.manage.system.core.MailService;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/mailgun")
|
||||
public class MailCallBackController {
|
||||
Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Resource
|
||||
private MailService mailService;
|
||||
|
||||
@RequestMapping(value = "/callback", method = RequestMethod.POST)
|
||||
public void contractList(@RequestBody String content, HttpServletRequest req) {
|
||||
logger.info(content);
|
||||
public void contractList(@RequestBody String content) throws Exception {
|
||||
mailService.dealNotify(content);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package au.com.royalpay.payment.manage.system.core.impl;
|
||||
|
||||
import au.com.royalpay.payment.manage.system.core.MailService;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@SpringBootTest
|
||||
@ActiveProfiles({ "local", "alipay", "wechat", "jd", "bestpay" })
|
||||
@RunWith(SpringRunner.class)
|
||||
public class MailServiceImplTest {
|
||||
|
||||
@Resource
|
||||
MailService mailService;
|
||||
@Test
|
||||
public void dealNotify() {
|
||||
String dd= "timestamp=1526298391&token=b7ad8dc0905c46b1c4853200941d30417b4d3f3695815dc729&signature=a3507be4d7ad2b48c4b57202eabd6f63b75abfacd974a9bc7773dc968a12c34e&X-Mailgun-Sid=WyJlMjYwYSIsICI0NjQ1NjMxMThAcXEuY29tIiwgIjQzODY0NiJd&domain=dev.showcodes.com&X-Mailgun-Tag=test1&event=delivered&event-timestamp=1526298391.16&message-headers=[[\"X-Mailgun-Sending-Ip\", \"184.173.153.207\"], [\"X-Mailgun-Sid\", \"WyJlMjYwYSIsICI0NjQ1NjMxMThAcXEuY29tIiwgIjQzODY0NiJd\"], [\"List-Unsubscribe\", \"<mailto:u+mq6timzygy2dmjtjhuzdamjyga2tcnbrge2dmmrzfyys4msdivdecmkegi3uenbwgu4ugnbfgqygizlwfzzwq33xmnxwizltfzrw63jgna6tgmbummzdqnjzga2tkylggfqwkzjqhbrwiyzumzqtkztgg44donrgnu6tknjugqytomjgoi6tinrugu3dgmjrhastimdroexgg33nezwxslldovzxi33nfvsgc5dbhustoqrfgizgwzlzeuzdejjtiestemtwmfwhkzjfgizckn2e@dev.showcodes.com>\"], [\"Received\", \"by luna.mailgun.net with SMTP X-Mailgun-List-Id=5544171, 8794346058393; Mon, 14 May 2018 11:46:29 +0000\"], [\"X-Mailgun-List-Id\", \"5544171\"], [\"X-Mailgun-List-Address\", \"info@dev.showcodes.com\"], [\"List-Id\", \"<info.dev.showcodes.com>\"], [\"Received\", \"by luna.mailgun.net with HTTP; Mon, 14 May 2018 11:46:27 +0000\"], [\"Date\", \"Mon, 14 May 2018 11:46:27 +0000\"], [\"Sender\", \"postmaster@dev.showcodes.com\"], [\"X-Mailgun-Variables\", \"{\\\"my-custom-data\\\": \\\"{\\\\\\\"key\\\\\\\":\\\\\\\"value\\\\\\\"}\\\"}\"], [\"X-Mailgun-Tag\", \"test1\"], [\"From\", \"postmaster@dev.showcodes.com\"], [\"Subject\", \"Testqweasdzxc1\"], [\"Mime-Version\", \"1.0\"], [\"Content-Type\", [\"multipart/alternative\", {\"boundary\": \"12109fc0295a479385fcbed01f501455\"}]], [\"Message-Id\", \"<20180514114629.1.2CEFA1D27B4659C4@dev.showcodes.com>\"], [\"To\", \"yz <464563118@qq.com>\"]]&Message-Id=<20180514114629.1.2CEFA1D27B4659C4@dev.showcodes.com>&recipient=464563118@qq.com&my-custom-data={\"id\":\"123\"}&body-plain=";
|
||||
try {
|
||||
mailService.dealNotify(dd);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue