| @@ -3,10 +3,7 @@ package com.iformall.mq; | |||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxMsgRecordMapper; | import com.iformall.mapper.WxMsgRecordMapper; | ||||
| import com.iformall.service.impl.SendCallBackSmsServiceImpl; | |||||
| import com.iformall.service.impl.SendEmailServiceImpl; | |||||
| import com.iformall.service.impl.SendSmartAppMsgServiceImpl; | |||||
| import com.iformall.service.impl.SendSmsServiceImpl; | |||||
| import com.iformall.service.impl.*; | |||||
| import com.iformall.utils.JsonUtil; | import com.iformall.utils.JsonUtil; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -29,6 +26,8 @@ public class MqBaseConsumer { | |||||
| private SendEmailServiceImpl sendEmailService; | private SendEmailServiceImpl sendEmailService; | ||||
| @Autowired | @Autowired | ||||
| private SendSmartAppMsgServiceImpl sendSmartAppMsgService; | private SendSmartAppMsgServiceImpl sendSmartAppMsgService; | ||||
| @Autowired | |||||
| private SendMpMsgServiceImpl sendMpMsgService; | |||||
| // @Autowired | // @Autowired | ||||
| // private MqBaseProducer mqBaseProducer; | // private MqBaseProducer mqBaseProducer; | ||||
| @@ -42,15 +41,18 @@ public class MqBaseConsumer { | |||||
| if(EnumMsgRecordType.SMS.getCode().equals(baseMsg.getMsgType())){ | if(EnumMsgRecordType.SMS.getCode().equals(baseMsg.getMsgType())){ | ||||
| //短信 | //短信 | ||||
| sendSmsService.send((WxMsgRecord)JsonUtil.readValue(message,WxMsgRecord.class)); | sendSmsService.send((WxMsgRecord)JsonUtil.readValue(message,WxMsgRecord.class)); | ||||
| }else if(EnumMsgRecordType.SMS_CALLBACK.getCode().equals(baseMsg.getMsgType())){ | |||||
| } else if(EnumMsgRecordType.SMS_CALLBACK.getCode().equals(baseMsg.getMsgType())){ | |||||
| //业务短信 | //业务短信 | ||||
| sendCallBackSmsService.send((WxMsg)JsonUtil.readValue(message,WxMsg.class)); | sendCallBackSmsService.send((WxMsg)JsonUtil.readValue(message,WxMsg.class)); | ||||
| }else if(EnumMsgRecordType.EMAIL.getCode().equals(baseMsg.getMsgType())){ | |||||
| } else if(EnumMsgRecordType.EMAIL.getCode().equals(baseMsg.getMsgType())){ | |||||
| //邮件 | //邮件 | ||||
| sendEmailService.send((MailMsg)JsonUtil.readValue(message,MailMsg.class)); | sendEmailService.send((MailMsg)JsonUtil.readValue(message,MailMsg.class)); | ||||
| }else if(EnumMsgRecordType.SMART_APP.getCode().equals(baseMsg.getMsgType())){ | |||||
| //微信小程序 | |||||
| } else if(EnumMsgRecordType.SMART_APP.getCode().equals(baseMsg.getMsgType())){ | |||||
| //微信小程序-模板消息 | |||||
| sendSmartAppMsgService.send((SmartAppMsg)JsonUtil.readValue(message,SmartAppMsg.class)); | sendSmartAppMsgService.send((SmartAppMsg)JsonUtil.readValue(message,SmartAppMsg.class)); | ||||
| } else if(EnumMsgRecordType.PUBLIC.getCode().equals(baseMsg.getMsgType())) { | |||||
| //公众号-模板消息 | |||||
| sendMpMsgService.send((MpAppMsg)JsonUtil.readValue(message,MpAppMsg.class)); | |||||
| } | } | ||||
| baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | ||||
| wxMsgRecordMapper.update(baseMsg); | wxMsgRecordMapper.update(baseMsg); | ||||
| @@ -1,5 +1,7 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import lombok.Data; | |||||
| import javax.persistence.Transient; | import javax.persistence.Transient; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -7,101 +9,37 @@ import java.io.Serializable; | |||||
| * @author luozukai | * @author luozukai | ||||
| * @date 2019/3/7 10:05 | * @date 2019/3/7 10:05 | ||||
| */ | */ | ||||
| @Data | |||||
| public class BaseMsg implements Serializable { | public class BaseMsg implements Serializable { | ||||
| private static final long serialVersionUID = 923764283764823L; | private static final long serialVersionUID = 923764283764823L; | ||||
| //域0全部 1sys 2a端 3c端 4b端 | |||||
| @io.swagger.annotations.ApiModelProperty(value="域0全部 1sys 2a端 3c端 4b端",name="domain") | |||||
| private Integer domain = 0; | private Integer domain = 0; | ||||
| //租户id | |||||
| @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") | |||||
| private String tenantId; | private String tenantId; | ||||
| //唯一标识 | |||||
| @io.swagger.annotations.ApiModelProperty(value="唯一标识",name="uuid") | |||||
| @Transient | @Transient | ||||
| private String uuid; | private String uuid; | ||||
| //接收人,手机号邮件地址等 | |||||
| @io.swagger.annotations.ApiModelProperty(value="接收人,手机号邮件地址等",name="receiver") | |||||
| @Transient | @Transient | ||||
| private String receiver; | private String receiver; | ||||
| //消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 | |||||
| @io.swagger.annotations.ApiModelProperty(value="消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 7websocket",name="msgType") | |||||
| @Transient | @Transient | ||||
| private Integer msgType; | private Integer msgType; | ||||
| //消息状态 0默认1发送成功2消费成功3消费失败 | |||||
| @io.swagger.annotations.ApiModelProperty(value="消息状态 0默认1发送成功2消费成功3消费失败",name="msgStatus") | |||||
| @Transient | @Transient | ||||
| private Integer msgStatus; | private Integer msgStatus; | ||||
| //结果信息 | |||||
| @io.swagger.annotations.ApiModelProperty(value="结果信息",name="statusMessage") | |||||
| @Transient | @Transient | ||||
| private String statusMessage; | private String statusMessage; | ||||
| //rocketMQ延迟消息1s,5s,10s,30s,1m,2m,3m,4m,5m,6m,7m,8m,9m,10m,20m,30m,1h,2h | |||||
| @io.swagger.annotations.ApiModelProperty(value="rocketMQ延迟消息1s,5s,10s,30s,1m,2m,3m,4m,5m,6m,7m,8m,9m,10m,20m,30m,1h,2h",name="delayTimeLevel") | |||||
| @Transient | @Transient | ||||
| private Integer delayTimeLevel = 0; | private Integer delayTimeLevel = 0; | ||||
| public Integer getDomain() { | |||||
| return domain; | |||||
| } | |||||
| public void setDomain(Integer domain) { | |||||
| this.domain = domain; | |||||
| } | |||||
| public String getTenantId() { | |||||
| return tenantId; | |||||
| } | |||||
| public void setTenantId(String tenantId) { | |||||
| this.tenantId = tenantId; | |||||
| } | |||||
| public String getReceiver() { | |||||
| return receiver; | |||||
| } | |||||
| public void setReceiver(String receiver) { | |||||
| this.receiver = receiver; | |||||
| } | |||||
| public Integer getDelayTimeLevel() { | |||||
| return delayTimeLevel; | |||||
| } | |||||
| public void setDelayTimeLevel(Integer delayTimeLevel) { | |||||
| this.delayTimeLevel = delayTimeLevel; | |||||
| } | |||||
| public String getStatusMessage() { | |||||
| return statusMessage; | |||||
| } | |||||
| public void setStatusMessage(String statusMessage) { | |||||
| this.statusMessage = statusMessage; | |||||
| } | |||||
| public String getUuid() { | |||||
| return uuid; | |||||
| } | |||||
| public void setUuid(String uuid) { | |||||
| this.uuid = uuid; | |||||
| } | |||||
| public Integer getMsgStatus() { | |||||
| return msgStatus; | |||||
| } | |||||
| public void setMsgStatus(Integer msgStatus) { | |||||
| this.msgStatus = msgStatus; | |||||
| } | |||||
| public Integer getMsgType() { | |||||
| return msgType; | |||||
| } | |||||
| public void setMsgType(Integer msgType) { | |||||
| this.msgType = msgType; | |||||
| } | |||||
| } | } | ||||
| @@ -1,11 +1,18 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| /** | /** | ||||
| * @author luozukai | * @author luozukai | ||||
| * @date 2019/3/7 10:05 | * @date 2019/3/7 10:05 | ||||
| */ | */ | ||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class MailMsg extends BaseMsg { | public class MailMsg extends BaseMsg { | ||||
| private static final long serialVersionUID = 923764283760321L; | private static final long serialVersionUID = 923764283760321L; | ||||
| // 模板id | // 模板id | ||||
| @@ -26,84 +33,4 @@ public class MailMsg extends BaseMsg { | |||||
| //动态替换内容 | //动态替换内容 | ||||
| private Map<String,String> dynamicContentMap; | private Map<String,String> dynamicContentMap; | ||||
| public Map<String, String> getDynamicContentMap() { | |||||
| return dynamicContentMap; | |||||
| } | |||||
| public void setDynamicContentMap(Map<String, String> dynamicContentMap) { | |||||
| this.dynamicContentMap = dynamicContentMap; | |||||
| } | |||||
| public Integer getModelId() { | |||||
| return modelId; | |||||
| } | |||||
| public void setModelId(Integer modelId) { | |||||
| this.modelId = modelId; | |||||
| } | |||||
| public String[] getTo() { | |||||
| return to; | |||||
| } | |||||
| public void setTo(String[] to) { | |||||
| this.to = to; | |||||
| } | |||||
| public String getFrom() { | |||||
| return from; | |||||
| } | |||||
| public void setFrom(String from) { | |||||
| this.from = from; | |||||
| } | |||||
| public String getMsg() { | |||||
| return msg; | |||||
| } | |||||
| public void setMsg(String msg) { | |||||
| this.msg = msg; | |||||
| } | |||||
| public String getSubject() { | |||||
| return subject; | |||||
| } | |||||
| public void setSubject(String subject) { | |||||
| this.subject = subject; | |||||
| } | |||||
| public boolean isHtml() { | |||||
| return isHtml; | |||||
| } | |||||
| public void setHtml(boolean html) { | |||||
| isHtml = html; | |||||
| } | |||||
| public String getFilePath() { | |||||
| return filePath; | |||||
| } | |||||
| public void setFilePath(String filePath) { | |||||
| this.filePath = filePath; | |||||
| } | |||||
| public String getRscPath() { | |||||
| return rscPath; | |||||
| } | |||||
| public void setRscPath(String rscPath) { | |||||
| this.rscPath = rscPath; | |||||
| } | |||||
| public String getRscI() { | |||||
| return rscI; | |||||
| } | |||||
| public void setRscI(String rscI) { | |||||
| this.rscI = rscI; | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,35 @@ | |||||
| package com.iformall.domain.po; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; | |||||
| import java.util.List; | |||||
| /** | |||||
| * 微信公众号模板消息 | |||||
| * @author Stormeye | |||||
| * @date 2019/4/9 13:55 | |||||
| */ | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class MpAppMsg extends BaseMsg { | |||||
| private static final long serialVersionUID = 223232132183760321L; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="appId") | |||||
| private String appId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号openid",name="to") | |||||
| private String to; | |||||
| @io.swagger.annotations.ApiModelProperty(value="模板类型",name="templateType") | |||||
| private Integer templateType; | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序AppId",name="miniAppId") | |||||
| private String miniAppId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="miniPagePath") | |||||
| private String miniPagePath; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="appId") | |||||
| private String emphasisKeyword; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号模板主体",name="templateDataList") | |||||
| private List<WxMpTemplateData> templateDataList; | |||||
| } | |||||
| @@ -1,6 +1,10 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | ||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.List; | import java.util.List; | ||||
| /** | /** | ||||
| @@ -8,71 +12,24 @@ import java.util.List; | |||||
| * @author luozukai | * @author luozukai | ||||
| * @date 2019/3/7 10:05 | * @date 2019/3/7 10:05 | ||||
| */ | */ | ||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class SmartAppMsg extends BaseMsg { | public class SmartAppMsg extends BaseMsg { | ||||
| private static final long serialVersionUID = 223232132183760321L; | private static final long serialVersionUID = 223232132183760321L; | ||||
| //小程序的appId | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序AppId",name="appId") | |||||
| private String appId; | private String appId; | ||||
| @io.swagger.annotations.ApiModelProperty(value="小程序用户openId",name="to") | |||||
| private String to; | private String to; | ||||
| private String from; | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序formId",name="formId") | |||||
| private String formId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序模板类型",name="templateType") | |||||
| private Integer templateType; | private Integer templateType; | ||||
| @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="gotopage") | |||||
| private String gotopage; | private String gotopage; | ||||
| @io.swagger.annotations.ApiModelProperty(value="小程序模板消息标题",name="emphasisKeyword") | |||||
| private String emphasisKeyword; | private String emphasisKeyword; | ||||
| @io.swagger.annotations.ApiModelProperty(value="小程序模板实体",name="templateDataList") | |||||
| private List<WxMaTemplateData> templateDataList; | private List<WxMaTemplateData> templateDataList; | ||||
| public String getAppId() { | |||||
| return appId; | |||||
| } | |||||
| public void setAppId(String appId) { | |||||
| this.appId = appId; | |||||
| } | |||||
| public String getEmphasisKeyword() { | |||||
| return emphasisKeyword; | |||||
| } | |||||
| public void setEmphasisKeyword(String emphasisKeyword) { | |||||
| this.emphasisKeyword = emphasisKeyword; | |||||
| } | |||||
| public String getGotopage() { | |||||
| return gotopage; | |||||
| } | |||||
| public void setGotopage(String gotopage) { | |||||
| this.gotopage = gotopage; | |||||
| } | |||||
| public String getTo() { | |||||
| return to; | |||||
| } | |||||
| public void setTo(String to) { | |||||
| this.to = to; | |||||
| } | |||||
| public String getFrom() { | |||||
| return from; | |||||
| } | |||||
| public void setFrom(String from) { | |||||
| this.from = from; | |||||
| } | |||||
| public Integer getTemplateType() { | |||||
| return templateType; | |||||
| } | |||||
| public void setTemplateType(Integer templateType) { | |||||
| this.templateType = templateType; | |||||
| } | |||||
| public List<WxMaTemplateData> getTemplateDataList() { | |||||
| return templateDataList; | |||||
| } | |||||
| public void setTemplateDataList(List<WxMaTemplateData> templateDataList) { | |||||
| this.templateDataList = templateDataList; | |||||
| } | |||||
| } | } | ||||
| @@ -1,5 +1,9 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import javax.persistence.Id; | import javax.persistence.Id; | ||||
| import javax.persistence.Table; | import javax.persistence.Table; | ||||
| import javax.persistence.Transient; | import javax.persistence.Transient; | ||||
| @@ -8,6 +12,9 @@ import java.util.Date; | |||||
| import java.util.List; | import java.util.List; | ||||
| @Table(name = "wx_msg") | @Table(name = "wx_msg") | ||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxMsg extends BaseMsg { | public class WxMsg extends BaseMsg { | ||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| @@ -19,66 +26,32 @@ public class WxMsg extends BaseMsg { | |||||
| @Transient | @Transient | ||||
| protected String sortColumns; | protected String sortColumns; | ||||
| public Long getId() { | |||||
| return id; | |||||
| } | |||||
| public void setId(Long id) { | |||||
| this.id = id; | |||||
| } | |||||
| public String getSortColumns() { | |||||
| return sortColumns; | |||||
| } | |||||
| public List<String> getIds() { | |||||
| return ids; | |||||
| } | |||||
| public void setIds(List<String> ids) { | |||||
| this.ids = ids; | |||||
| } | |||||
| /*租户ID**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") | @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") | ||||
| private String tenantId; | private String tenantId; | ||||
| /*模板id**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "模板id", name = "modelId") | @io.swagger.annotations.ApiModelProperty(value = "模板id", name = "modelId") | ||||
| private Long modelId; | private Long modelId; | ||||
| /*内容**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "内容", name = "msg") | @io.swagger.annotations.ApiModelProperty(value = "内容", name = "msg") | ||||
| private String msg; | private String msg; | ||||
| /*发送时间**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "sendtime") | @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "sendtime") | ||||
| private String sendtime; | private String sendtime; | ||||
| /*发送时间**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "createtime") | @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "createtime") | ||||
| private Date createtime; | private Date createtime; | ||||
| /*预计发送数量**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "预计发送数量", name = "expectSendNumber") | @io.swagger.annotations.ApiModelProperty(value = "预计发送数量", name = "expectSendNumber") | ||||
| private Integer expectSendNumber; | private Integer expectSendNumber; | ||||
| /*成功数量**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "成功数量", name = "successNumber") | @io.swagger.annotations.ApiModelProperty(value = "成功数量", name = "successNumber") | ||||
| private Integer successNumber; | private Integer successNumber; | ||||
| /*错误数量**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "错误数量", name = "errorNumber") | @io.swagger.annotations.ApiModelProperty(value = "错误数量", name = "errorNumber") | ||||
| private Integer errorNumber; | private Integer errorNumber; | ||||
| /***/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "returnResult") | @io.swagger.annotations.ApiModelProperty(value = "", name = "returnResult") | ||||
| private String returnResult; | private String returnResult; | ||||
| /***/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "phones") | @io.swagger.annotations.ApiModelProperty(value = "", name = "phones") | ||||
| private String phones; | private String phones; | ||||
| /***/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "signature") | @io.swagger.annotations.ApiModelProperty(value = "", name = "signature") | ||||
| private String signature; | private String signature; | ||||
| /***/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "isright") | @io.swagger.annotations.ApiModelProperty(value = "", name = "isright") | ||||
| private Integer isright; | private Integer isright; | ||||
| /***/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "", name = "name") | @io.swagger.annotations.ApiModelProperty(value = "", name = "name") | ||||
| private String name; | private String name; | ||||
| /*发送状态0未发送 1已发送 2草稿箱**/ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "发送状态0失败1成功", name = "sendstatus") | @io.swagger.annotations.ApiModelProperty(value = "发送状态0失败1成功", name = "sendstatus") | ||||
| private Integer sendstatus; | private Integer sendstatus; | ||||
| @@ -121,168 +94,23 @@ public class WxMsg extends BaseMsg { | |||||
| this.couponInject = couponInject; | this.couponInject = couponInject; | ||||
| } | } | ||||
| public String getTenantId() { | |||||
| return tenantId; | |||||
| } | |||||
| public void setTenantId(String _tenantId) { | |||||
| tenantId = _tenantId; | |||||
| } | |||||
| public Long getModelId() { | |||||
| return modelId; | |||||
| } | |||||
| public void setModelId(Long _modelId) { | |||||
| modelId = _modelId; | |||||
| } | |||||
| public String getMsg() { | |||||
| return msg; | |||||
| } | |||||
| public void setMsg(String _msg) { | |||||
| msg = _msg; | |||||
| } | |||||
| public String getSendtime() { | |||||
| return sendtime; | |||||
| } | |||||
| public void setSendtime(String _sendtime) { | |||||
| sendtime = _sendtime; | |||||
| } | |||||
| public Date getCreatetime() { | |||||
| return createtime; | |||||
| } | |||||
| public void setCreatetime(Date _createtime) { | |||||
| createtime = _createtime; | |||||
| } | |||||
| public Integer getExpectSendNumber() { | |||||
| return expectSendNumber; | |||||
| } | |||||
| public void setExpectSendNumber(Integer _expectSendNumber) { | |||||
| expectSendNumber = _expectSendNumber; | |||||
| } | |||||
| public Integer getSuccessNumber() { | |||||
| return successNumber; | |||||
| } | |||||
| public void setSuccessNumber(Integer _successNumber) { | |||||
| successNumber = _successNumber; | |||||
| } | |||||
| public Integer getErrorNumber() { | |||||
| return errorNumber; | |||||
| } | |||||
| public void setErrorNumber(Integer _errorNumber) { | |||||
| errorNumber = _errorNumber; | |||||
| } | |||||
| public String getReturnResult() { | |||||
| return returnResult; | |||||
| } | |||||
| public void setReturnResult(String _returnResult) { | |||||
| returnResult = _returnResult; | |||||
| } | |||||
| public String getPhones() { | |||||
| return phones; | |||||
| } | |||||
| public void setPhones(String _phones) { | |||||
| phones = _phones; | |||||
| } | |||||
| public String getSignature() { | |||||
| return signature; | |||||
| } | |||||
| public void setSignature(String _signature) { | |||||
| signature = _signature; | |||||
| } | |||||
| public Integer getIsright() { | |||||
| return isright; | |||||
| } | |||||
| public void setIsright(Integer _isright) { | |||||
| isright = _isright; | |||||
| } | |||||
| public String getName() { | |||||
| return name; | |||||
| } | |||||
| public void setName(String _name) { | |||||
| name = _name; | |||||
| } | |||||
| public Integer getSendstatus() { | |||||
| return sendstatus; | |||||
| } | |||||
| public void setSendstatus(Integer _sendstatus) { | |||||
| sendstatus = _sendstatus; | |||||
| } | |||||
| public String getExcelpath() { | |||||
| return excelpath; | |||||
| } | |||||
| public void setExcelpath(String excelpath) { | |||||
| this.excelpath = excelpath; | |||||
| } | |||||
| public String getLabel() { | |||||
| return label; | |||||
| } | |||||
| public void setLabel(String label) { | |||||
| this.label = label; | |||||
| } | |||||
| public Integer getStatus() { | |||||
| return status; | |||||
| } | |||||
| public void setStatus(Integer status) { | |||||
| this.status = status; | |||||
| } | |||||
| public Integer getWay() { | |||||
| return way; | |||||
| } | |||||
| public void setWay(Integer way) { | |||||
| this.way = way; | |||||
| } | |||||
| public List<WxTags> getTagsList() { | |||||
| return tagsList; | |||||
| } | |||||
| public void setTagsList(List<WxTags> tagsList) { | |||||
| this.tagsList = tagsList; | |||||
| } | |||||
| public Long getCouponInjectId() { | |||||
| return couponInjectId; | |||||
| } | |||||
| public void setCouponInjectId(Long couponInjectId) { | |||||
| this.couponInjectId = couponInjectId; | |||||
| } | |||||
| public static enum Field { | public static enum Field { | ||||
| Id_ASC("`id` ASC"), Id_DESC("`id` DESC"), TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC"), ModelId_ASC("`model_id` ASC"), ModelId_DESC("`model_id` DESC"), Msg_ASC("`msg` ASC"), Msg_DESC("`msg` DESC"), Sendtime_ASC("`sendtime` ASC"), Sendtime_DESC("`sendtime` DESC"), Createtime_ASC("`createtime` ASC"), Createtime_DESC("`createtime` DESC"), ExpectSendNumber_ASC("`expect_send_number` ASC"), ExpectSendNumber_DESC("`expect_send_number` DESC"), SuccessNumber_ASC("`success_number` ASC"), SuccessNumber_DESC("`success_number` DESC"), ErrorNumber_ASC("`error_number` ASC"), ErrorNumber_DESC("`error_number` DESC"), ReturnResult_ASC("`return_result` ASC"), ReturnResult_DESC("`return_result` DESC"), Phones_ASC("`phones` ASC"), Phones_DESC("`phones` DESC"), Signature_ASC("`signature` ASC"), Signature_DESC("`signature` DESC"), Isright_ASC("`isright` ASC"), Isright_DESC("`isright` DESC"), Name_ASC("`name` ASC"), Name_DESC("`name` DESC"), Sendstatus_ASC("`sendstatus` ASC"), Sendstatus_DESC("`sendstatus` DESC"); | |||||
| Id_ASC("`id` ASC"), Id_DESC("`id` DESC") | |||||
| , TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC") | |||||
| , ModelId_ASC("`model_id` ASC"), ModelId_DESC("`model_id` DESC") | |||||
| , Msg_ASC("`msg` ASC"), Msg_DESC("`msg` DESC") | |||||
| , Sendtime_ASC("`sendtime` ASC"), Sendtime_DESC("`sendtime` DESC") | |||||
| , Createtime_ASC("`createtime` ASC"), Createtime_DESC("`createtime` DESC") | |||||
| , ExpectSendNumber_ASC("`expect_send_number` ASC"), ExpectSendNumber_DESC("`expect_send_number` DESC") | |||||
| , SuccessNumber_ASC("`success_number` ASC"), SuccessNumber_DESC("`success_number` DESC") | |||||
| , ErrorNumber_ASC("`error_number` ASC"), ErrorNumber_DESC("`error_number` DESC") | |||||
| , ReturnResult_ASC("`return_result` ASC"), ReturnResult_DESC("`return_result` DESC") | |||||
| , Phones_ASC("`phones` ASC"), Phones_DESC("`phones` DESC") | |||||
| , Signature_ASC("`signature` ASC"), Signature_DESC("`signature` DESC") | |||||
| , Isright_ASC("`isright` ASC"), Isright_DESC("`isright` DESC") | |||||
| , Name_ASC("`name` ASC"), Name_DESC("`name` DESC") | |||||
| , Sendstatus_ASC("`sendstatus` ASC"), Sendstatus_DESC("`sendstatus` DESC") | |||||
| ; | |||||
| private String value; | private String value; | ||||
| Field(String value) { | Field(String value) { | ||||
| @@ -1,201 +1,59 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import javax.persistence.Id; | import javax.persistence.Id; | ||||
| import javax.persistence.Table; | import javax.persistence.Table; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @Table(name = "wx_msg_record") | @Table(name = "wx_msg_record") | ||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxMsgRecord extends BaseMsg { | public class WxMsgRecord extends BaseMsg { | ||||
| private static final long serialVersionUID = 18957895653478L; | private static final long serialVersionUID = 18957895653478L; | ||||
| @Id | @Id | ||||
| protected Long id; | protected Long id; | ||||
| //租户id | |||||
| private String tenantId; | |||||
| //msg 消息类型1短信 2回调短信 邮件 3微信小程序模板 4微信公众号模板 5系统通 | //msg 消息类型1短信 2回调短信 邮件 3微信小程序模板 4微信公众号模板 5系统通 | ||||
| @io.swagger.annotations.ApiModelProperty(value="消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 7websocket",name="msg") | |||||
| private String msg; | private String msg; | ||||
| //发送时间 | |||||
| @io.swagger.annotations.ApiModelProperty(value="发送时间",name="sendTime") | |||||
| private String sendTime; | private String sendTime; | ||||
| //model_id | |||||
| @io.swagger.annotations.ApiModelProperty(value="modelId",name="modelId") | |||||
| private Long modelId; | private Long modelId; | ||||
| //from,手机号邮件地址等 | |||||
| @io.swagger.annotations.ApiModelProperty(value="from,手机号邮件地址等",name="sender") | |||||
| private String sender; | private String sender; | ||||
| //发送人id | |||||
| @io.swagger.annotations.ApiModelProperty(value="发送人id",name="senderUserId") | |||||
| private Long senderUserId; | private Long senderUserId; | ||||
| //发送人姓名 | |||||
| @io.swagger.annotations.ApiModelProperty(value="发送人姓名",name="senderUserName") | |||||
| private String senderUserName; | private String senderUserName; | ||||
| //接收人用户id | |||||
| @io.swagger.annotations.ApiModelProperty(value="接收人用户id",name="receiverUserId") | |||||
| private Long receiverUserId; | private Long receiverUserId; | ||||
| //接收人姓名 | |||||
| @io.swagger.annotations.ApiModelProperty(value="接收人姓名",name="receiverUserName") | |||||
| private String receiverUserName; | private String receiverUserName; | ||||
| //签名 | |||||
| @io.swagger.annotations.ApiModelProperty(value="签名",name="signature") | |||||
| private String signature; | private String signature; | ||||
| //模板类型 | |||||
| @io.swagger.annotations.ApiModelProperty(value="模板类型",name="modelType") | |||||
| private Integer modelType; | private Integer modelType; | ||||
| //消息json | |||||
| @io.swagger.annotations.ApiModelProperty(value="消息json",name="msgJson") | |||||
| private String msgJson; | private String msgJson; | ||||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") | |||||
| private Date createtime; | private Date createtime; | ||||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") | |||||
| private Date updatetime; | private Date updatetime; | ||||
| @io.swagger.annotations.ApiModelProperty(value="消息状态",name="msgStatus") | |||||
| private Integer msgStatus; | private Integer msgStatus; | ||||
| @io.swagger.annotations.ApiModelProperty(value="结果信息",name="statusMessage") | |||||
| private String statusMessage; | private String statusMessage; | ||||
| //动态替换内容 | |||||
| @io.swagger.annotations.ApiModelProperty(value="动态替换内容",name="dynamicContentMap") | |||||
| private Map<String,String> dynamicContentMap; | private Map<String,String> dynamicContentMap; | ||||
| @Override | |||||
| public Integer getMsgStatus() { | |||||
| return msgStatus; | |||||
| } | |||||
| @Override | |||||
| public void setMsgStatus(Integer msgStatus) { | |||||
| this.msgStatus = msgStatus; | |||||
| } | |||||
| @Override | |||||
| public String getStatusMessage() { | |||||
| return statusMessage; | |||||
| } | |||||
| @Override | |||||
| public void setStatusMessage(String statusMessage) { | |||||
| this.statusMessage = statusMessage; | |||||
| } | |||||
| public String getMsgJson() { | |||||
| return msgJson; | |||||
| } | |||||
| public void setMsgJson(String msgJson) { | |||||
| this.msgJson = msgJson; | |||||
| } | |||||
| public Map<String, String> getDynamicContentMap() { | |||||
| return dynamicContentMap; | |||||
| } | |||||
| public void setDynamicContentMap(Map<String, String> dynamicContentMap) { | |||||
| this.dynamicContentMap = dynamicContentMap; | |||||
| } | |||||
| public Long getId() { | |||||
| return id; | |||||
| } | |||||
| public void setId(Long id) { | |||||
| this.id = id; | |||||
| } | |||||
| public String getSender() { | |||||
| return sender; | |||||
| } | |||||
| public void setSender(String sender) { | |||||
| this.sender = sender; | |||||
| } | |||||
| public Long getSenderUserId() { | |||||
| return senderUserId; | |||||
| } | |||||
| public void setSenderUserId(Long senderUserId) { | |||||
| this.senderUserId = senderUserId; | |||||
| } | |||||
| public String getSenderUserName() { | |||||
| return senderUserName; | |||||
| } | |||||
| public void setSenderUserName(String senderUserName) { | |||||
| this.senderUserName = senderUserName; | |||||
| } | |||||
| public Long getReceiverUserId() { | |||||
| return receiverUserId; | |||||
| } | |||||
| public void setReceiverUserId(Long receiverUserId) { | |||||
| this.receiverUserId = receiverUserId; | |||||
| } | |||||
| public String getReceiverUserName() { | |||||
| return receiverUserName; | |||||
| } | |||||
| public void setReceiverUserName(String receiverUserName) { | |||||
| this.receiverUserName = receiverUserName; | |||||
| } | |||||
| public Integer getModelType() { | |||||
| return modelType; | |||||
| } | |||||
| public void setModelType(Integer modelType) { | |||||
| this.modelType = modelType; | |||||
| } | |||||
| public String getSignature() { | |||||
| return signature; | |||||
| } | |||||
| public void setSignature(String signature) { | |||||
| this.signature = signature; | |||||
| } | |||||
| public String getTenantId() { | |||||
| return tenantId; | |||||
| } | |||||
| public void setTenantId(String tenantId) { | |||||
| this.tenantId = tenantId; | |||||
| } | |||||
| public String getMsg() { | |||||
| return msg; | |||||
| } | |||||
| public void setMsg(String msg) { | |||||
| this.msg = msg; | |||||
| } | |||||
| public String getSendTime() { | |||||
| return sendTime; | |||||
| } | |||||
| public void setSendTime(String sendTime) { | |||||
| this.sendTime = sendTime; | |||||
| } | |||||
| public Long getModelId() { | |||||
| return modelId; | |||||
| } | |||||
| public void setModelId(Long modelId) { | |||||
| this.modelId = modelId; | |||||
| } | |||||
| public Date getCreatetime() { | |||||
| return createtime; | |||||
| } | |||||
| public void setCreatetime(Date createtime) { | |||||
| this.createtime = createtime; | |||||
| } | |||||
| public Date getUpdatetime() { | |||||
| return updatetime; | |||||
| } | |||||
| public void setUpdatetime(Date updatetime) { | |||||
| this.updatetime = updatetime; | |||||
| } | |||||
| } | } | ||||
| @@ -10,6 +10,7 @@ public enum EnumMsgRecordType { | |||||
| SMART_APP(4, "小程序"), | SMART_APP(4, "小程序"), | ||||
| PUBLIC(5, "公众号"), | PUBLIC(5, "公众号"), | ||||
| SYSTEM(6, "系统通知"), | SYSTEM(6, "系统通知"), | ||||
| WEBSOCKET_APP(7, "小程序websocket"), | |||||
| ; | ; | ||||
| public static EnumMsgRecordType getEnum(Integer code) { | public static EnumMsgRecordType getEnum(Integer code) { | ||||
| @@ -7,9 +7,10 @@ public enum EnumTemplateType { | |||||
| // 1-核销成功消息, 2-核销失败消息 | // 1-核销成功消息, 2-核销失败消息 | ||||
| VERIFY_SUCCESS(1, "核销成功消息"), | |||||
| VERIFY_FAIL(2, "核销失败消息"), | |||||
| AUDIT_MESSAGE(3, "审核结果通知") | |||||
| VERIFY_SUCCESS(1, "核销成功消息"), // 小程序 | |||||
| VERIFY_FAIL(2, "核销失败消息"), // 小程序 | |||||
| AUDIT_MESSAGE(101, "公众号审核结果通知"), // 公众号 | |||||
| VERIFY_RESULT(102, "公众号卡券核销通知"), // 公众号 | |||||
| ; | ; | ||||
| public static EnumTemplateType getEnum(Integer code) { | public static EnumTemplateType getEnum(Integer code) { | ||||
| @@ -0,0 +1,65 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.mapper.WxTemplateMsgMapper; | |||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.wechat.FmOpenService; | |||||
| import me.chanjar.weixin.mp.api.WxMpService; | |||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| /** | |||||
| * 发送微信公众号模板消息 | |||||
| * @author Stormeye | |||||
| * @date 2019/4/9 13:51 | |||||
| */ | |||||
| @Service | |||||
| public class SendMpMsgServiceImpl implements MsgSendService { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxTemplateMsgMapper wxTemplateMsgMapper; | |||||
| @Autowired | |||||
| private FmOpenService openService; | |||||
| @Override | |||||
| public void send(BaseMsg baseMsg) throws Exception{ | |||||
| MpAppMsg mpAppMsg = (MpAppMsg)baseMsg; | |||||
| WxTemplateMsg msg = null; | |||||
| WxMpService wxMpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(mpAppMsg.getAppId()); | |||||
| // 查询信息模板 | |||||
| WxTemplateMsg msgQ = new WxTemplateMsg(); | |||||
| msgQ.setTenantId(mpAppMsg.getTenantId()); | |||||
| msgQ.setType(mpAppMsg.getTemplateType()); | |||||
| try { | |||||
| msg = wxTemplateMsgMapper.selectOne(msgQ); | |||||
| } catch (Exception e) { | |||||
| logger.error("公众号消息模板错误: " + e.getMessage()); | |||||
| } | |||||
| if (msg == null) { | |||||
| logger.error("找不到模板Id"); | |||||
| throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); | |||||
| } | |||||
| WxMpTemplateMessage.MiniProgram miniprogram = new WxMpTemplateMessage.MiniProgram(); | |||||
| miniprogram.setAppid(mpAppMsg.getMiniAppId()); | |||||
| miniprogram.setPagePath(mpAppMsg.getMiniPagePath()); | |||||
| miniprogram.setUsePath(true); | |||||
| WxMpTemplateMessage mpTemplateMessage = WxMpTemplateMessage.builder() | |||||
| .toUser(mpAppMsg.getTo()) | |||||
| .templateId(msg.getTemplateId()) | |||||
| .miniProgram(miniprogram) | |||||
| .data(mpAppMsg.getTemplateDataList()) | |||||
| .build(); | |||||
| String retStr = wxMpService.getTemplateMsgService().sendTemplateMsg(mpTemplateMessage); | |||||
| logger.info(retStr); | |||||
| } | |||||
| } | |||||
| @@ -69,7 +69,7 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { | |||||
| */ | */ | ||||
| templateMessage = WxMaTemplateMessage.builder() | templateMessage = WxMaTemplateMessage.builder() | ||||
| .toUser(smartAppMsg.getTo()) | .toUser(smartAppMsg.getTo()) | ||||
| .formId(smartAppMsg.getFrom()) // 微信支付的formId是prepayId | |||||
| .formId(smartAppMsg.getFormId()) // 微信支付的formId是prepayId | |||||
| .page(smartAppMsg.getGotopage()) | .page(smartAppMsg.getGotopage()) | ||||
| .data(smartAppMsg.getTemplateDataList()) | .data(smartAppMsg.getTemplateDataList()) | ||||
| .templateId(msg.getTemplateId()) | .templateId(msg.getTemplateId()) | ||||