@@ -33,7 +33,6 @@ public class MsgwSendDetails extends StringPropertyUUIDEntity { | |||
@NotNull | |||
@Column(name = "SEND_TIME") | |||
private LocalDateTime sendTime;//发送时间 | |||
@NotBlank | |||
@Size(max = 32) | |||
@Column(name = "APPLY_ID") | |||
private String applyId;//主表id |
@@ -6,12 +6,11 @@ import java.util.List; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.IasServiceType; | |||
public enum MsgwServiceSystem implements SignServiceSystem { | |||
SEND("send", "消息发送接口", "/send/api/json", "/send/common/binapi/") { | |||
public List<SignServiceType> listAllServices() { | |||
return Arrays.asList(IasServiceType.values()); | |||
return Arrays.asList(MsgwServiceType.values()); | |||
} | |||
}; | |||
@@ -11,6 +11,7 @@ dependencies { | |||
implementation "${groupname}:sample-protocol:1.0.0-SNAPSHOT" | |||
implementation "${groupname}:ias-protocol:1.0.0-SNAPSHOT" | |||
implementation "${groupname}:ats-protocol:1.0.0-SNAPSHOT" | |||
implementation "${groupname}:msgw-protocol:1.0.0-SNAPSHOT" | |||
implementation('cn.com.taiji.common:sso-client:2.3.10.7') | |||
implementation "org.springframework.boot:spring-boot-starter-security" | |||
implementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery" |
@@ -22,7 +22,6 @@ import java.time.LocalDateTime; | |||
@Setter | |||
public class MessageSendDetailsAddRequestDto extends AbstractStaffBizRequestDTO { | |||
@NotBlank | |||
private String applyId;//主表id | |||
private String modelId;//模板id | |||
@NotNull | |||
@@ -33,7 +32,6 @@ public class MessageSendDetailsAddRequestDto extends AbstractStaffBizRequestDTO | |||
private LocalDateTime sendTime;// 发送时间 | |||
@NotBlank | |||
private String title;//发送标题 | |||
@NotBlank | |||
private String requestClassName;//发送类名 | |||
@NotNull | |||
private MessageResult sendResult;//发送结果 |
@@ -0,0 +1,41 @@ | |||
package cn.com.taiji.msgw.manager; | |||
import javax.annotation.PostConstruct; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.MsgwServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.MsgwServiceType; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import cn.com.taiji.core.manager.comm.AbstractCommHandleManager; | |||
import cn.com.taiji.core.model.comm.protocol.ias.IasServiceType; | |||
import cn.com.taiji.msgw.manager.handler.SendServiceHandler; | |||
/** | |||
* | |||
* @author Peream <br> | |||
* Create Time:2019年7月28日 下午3:35:29<br> | |||
* @since 1.0 | |||
* @version 1.0 | |||
*/ | |||
@Service | |||
public class MyCommHandleManager extends AbstractCommHandleManager { | |||
@Autowired | |||
private SendServiceHandler sendServiceHandler; | |||
public MyCommHandleManager() { | |||
super(MsgwServiceSystem.SEND); | |||
} | |||
@PostConstruct | |||
public void init() { | |||
registerJsonService(sendServiceHandler); | |||
} | |||
@Override | |||
protected MsgwServiceType getServiceType(String ifCode) { | |||
return MsgwServiceType.fromIfCode(ifCode); | |||
} | |||
} |
@@ -0,0 +1,19 @@ | |||
package cn.com.taiji.msgw.manager.handler; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.manager.comm.AbstractCommServiceHandler; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.MsgwServiceType; | |||
public abstract class AbstractMsgwServiceHandler<C extends SignServiceCommand> | |||
extends AbstractCommServiceHandler<MsgwServiceType> { | |||
protected AbstractMsgwServiceHandler(MsgwServiceType serviceType) { | |||
super(serviceType); | |||
} | |||
@Override | |||
public <T extends AbstractSignTypeRequest<?>> void baseValidate(T t) throws ServiceHandleException { | |||
} | |||
} |
@@ -0,0 +1,55 @@ | |||
package cn.com.taiji.msgw.manager.handler; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.model.file.FileProtocolSystemError; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.MsgwServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwSendCmd; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwSmsSendRequest; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwWxMiniSendRequest; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwWxMpSendRequest; | |||
import cn.com.taiji.msgw.manager.universalSend.UniversalSendManager; | |||
/** | |||
* | |||
* @author Peream <br> | |||
* Create Time:2019年7月28日 下午4:45:09<br> | |||
* @since 1.0 | |||
* @version 1.0 | |||
*/ | |||
@Service | |||
public class SendServiceHandler extends AbstractMsgwServiceHandler<MsgwSendCmd> { | |||
public SendServiceHandler() { | |||
super(MsgwServiceType.NOTICE); | |||
} | |||
@Autowired | |||
private UniversalSendManager universalSendManager; | |||
@Override | |||
protected <T extends AbstractSignTypeRequest<?>> AbstractSignTypeResponse handleInternal(T request, | |||
SignJsonRequest jsonReq, AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
MsgwSendCmd cmd = MsgwSendCmd.fromIfCode(jsonReq.getIfCode()); | |||
switch (cmd) { | |||
case SMS: | |||
return universalSendManager.smsDirectSend((MsgwSmsSendRequest) request); | |||
case WXMINI: | |||
return universalSendManager.wxMiniDirectSend((MsgwWxMiniSendRequest) request); | |||
case WXMP: | |||
return universalSendManager.wxMpDirectSend((MsgwWxMpSendRequest) request); | |||
default: | |||
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | |||
} | |||
} | |||
} |
@@ -0,0 +1,15 @@ | |||
package cn.com.taiji.msgw.manager.universalSend; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.*; | |||
public interface UniversalSendManager { | |||
// 短信单个发送 | |||
MsgwSmsSendResponse smsDirectSend(MsgwSmsSendRequest request); | |||
// 微信小程序单个发送 | |||
MsgwWxMiniSendResponse wxMiniDirectSend(MsgwWxMiniSendRequest request); | |||
// 微信公众号单个发送 | |||
MsgwWxMpSendResponse wxMpDirectSend(MsgwWxMpSendRequest request); | |||
// 邮件单个发送 | |||
} |
@@ -0,0 +1,76 @@ | |||
package cn.com.taiji.msgw.manager.universalSend; | |||
import java.time.LocalDateTime; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import cn.com.taiji.core.entity.dict.msgw.MessageResult; | |||
import cn.com.taiji.core.entity.dict.msgw.MessageType; | |||
import cn.com.taiji.core.entity.msgw.MsgwSendDetails; | |||
import cn.com.taiji.core.model.comm.protocol.msgw.send.*; | |||
import cn.com.taiji.msgw.dto.MessageSendDetailsAddRequestDto; | |||
import cn.com.taiji.msgw.manager.AbstractCommManager; | |||
import cn.com.taiji.msgw.manager.importReview.MessageImportManager; | |||
import cn.com.taiji.msgw.manager.messageWaitSend.MessageWaitSendManager; | |||
@Service | |||
public class UniversalSendManagerImpl extends AbstractCommManager implements UniversalSendManager { | |||
@Autowired | |||
private MessageImportManager importManager; | |||
@Autowired | |||
private MessageWaitSendManager sendManager; | |||
@Override | |||
public MsgwSmsSendResponse smsDirectSend(MsgwSmsSendRequest request) { | |||
MessageSendDetailsAddRequestDto addRequest = new MessageSendDetailsAddRequestDto(); | |||
addRequest.setMessageType(MessageType.SHORT); | |||
addRequest.setReceiverId(request.getMobile()); | |||
addRequest.setSendTime(LocalDateTime.now()); | |||
addRequest.setTitle(request.getTitle()); | |||
addRequest.setSendResult(MessageResult.WAIT); | |||
addRequest.setRequestDataJson(request.toJson()); | |||
// 创建子表 | |||
MsgwSendDetails sendDetails = importManager.addSendDetail(addRequest); | |||
// 发送 | |||
sendManager.sendMessageByQtkMessageAndQuartz(sendDetails); | |||
return new MsgwSmsSendResponse(); | |||
} | |||
@Override | |||
public MsgwWxMiniSendResponse wxMiniDirectSend(MsgwWxMiniSendRequest request) { | |||
MessageSendDetailsAddRequestDto addRequest = new MessageSendDetailsAddRequestDto(); | |||
addRequest.setModelId(request.getTemplateId()); | |||
addRequest.setMessageType(MessageType.MINI_PROGRAM); | |||
addRequest.setReceiverId(request.getWxOpenId()); | |||
addRequest.setSendTime(LocalDateTime.now()); | |||
addRequest.setTitle(request.getTitle()); | |||
addRequest.setSendResult(MessageResult.WAIT); | |||
addRequest.setRequestDataJson(request.toJson()); | |||
// 创建子表 | |||
MsgwSendDetails sendDetails = importManager.addSendDetail(addRequest); | |||
// 发送 | |||
sendManager.sendMessageByQtkMessageAndQuartz(sendDetails); | |||
return new MsgwWxMiniSendResponse(); | |||
} | |||
@Override | |||
public MsgwWxMpSendResponse wxMpDirectSend(MsgwWxMpSendRequest request) { | |||
MessageSendDetailsAddRequestDto addRequest = new MessageSendDetailsAddRequestDto(); | |||
addRequest.setModelId(request.getTemplateId()); | |||
addRequest.setMessageType(MessageType.OFFICIAL_ACCOUNTS); | |||
addRequest.setReceiverId(request.getMpOpenId()); | |||
addRequest.setSendTime(LocalDateTime.now()); | |||
addRequest.setTitle(request.getTitle()); | |||
addRequest.setSendResult(MessageResult.WAIT); | |||
addRequest.setRequestDataJson(request.toJson()); | |||
// 创建子表 | |||
MsgwSendDetails sendDetails = importManager.addSendDetail(addRequest); | |||
// 发送 | |||
sendManager.sendMessageByQtkMessageAndQuartz(sendDetails); | |||
return new MsgwWxMpSendResponse(); | |||
} | |||
} |
@@ -0,0 +1,56 @@ | |||
/* | |||
* Date: 2015年4月9日 author: Peream (peream@gmail.com) | |||
* | |||
*/ | |||
package cn.com.taiji.msgw.web; | |||
import java.io.IOException; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import org.apache.skywalking.apm.toolkit.trace.Tag; | |||
import org.apache.skywalking.apm.toolkit.trace.Trace; | |||
import org.apache.skywalking.apm.toolkit.trace.TraceContext; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.*; | |||
import cn.com.taiji.core.manager.comm.BaseJsonPostController; | |||
import cn.com.taiji.core.manager.comm.JsonPostHandleManager; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
/** | |||
* | |||
* @author Peream <br> | |||
* Create Time:2015年4月9日 下午7:08:46<br> | |||
* <a href="mailto:peream@gmail.com">peream@gmail.com</a> | |||
* @since 1.0 | |||
* @version 1.0 | |||
*/ | |||
@RestController | |||
public class JsonPostServiceController extends BaseJsonPostController { | |||
@Autowired | |||
private JsonPostHandleManager handleManager; | |||
@CrossOrigin | |||
@RequestMapping(value = "/api/json", method = RequestMethod.POST) | |||
public void jsonPostRequest(@RequestBody SignJsonRequest req, HttpServletRequest request, HttpServletResponse response) | |||
throws IOException { | |||
response.setCharacterEncoding("UTF-8"); | |||
super.handleComm(req, req.getReqId(), handleManager, request, response); | |||
} | |||
@Trace | |||
@Tag(key = "req", value = "arg[0]") | |||
@Tag(key = "reqId", value = "arg[1]") | |||
@CrossOrigin | |||
@RequestMapping(value = "/api/json/{reqId}", method = RequestMethod.POST) | |||
public void jsonPostRequest(@RequestBody SignJsonRequest req, @PathVariable("reqId") String reqId, | |||
HttpServletRequest request, HttpServletResponse response) throws IOException { | |||
String traceId = TraceContext.traceId(); | |||
logger.info("traceId:{},jsonReq:{}",traceId,req); | |||
response.setCharacterEncoding("UTF-8"); | |||
super.handleComm(req, req.getReqId(), handleManager, request, response); | |||
} | |||
} |