| @@ -2,18 +2,13 @@ package com.iformall.controller; | |||||
| import com.iformall.annotation.SystemControllerLog; | import com.iformall.annotation.SystemControllerLog; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxCUserTags; | |||||
| import com.iformall.domain.po.WxFlowRecord; | import com.iformall.domain.po.WxFlowRecord; | ||||
| import com.iformall.domain.po.WxMsgRecord; | |||||
| import com.iformall.enums.EnumFlowRecordStatus; | import com.iformall.enums.EnumFlowRecordStatus; | ||||
| import com.iformall.enums.EnumMsgRecordStatus; | |||||
| import com.iformall.service.WxFlowService; | import com.iformall.service.WxFlowService; | ||||
| import com.iformall.service.WxMsgRecordService; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.flowable.engine.RuntimeService; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -7,7 +7,7 @@ import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.PushLimit; | import com.iformall.domain.po.PushLimit; | ||||
| import com.iformall.domain.po.WxCUserBasicInfo; | import com.iformall.domain.po.WxCUserBasicInfo; | ||||
| import com.iformall.domain.po.WxMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.domain.po.WxMsgConfig; | import com.iformall.domain.po.WxMsgConfig; | ||||
| import com.iformall.enums.EnumMsgSend; | import com.iformall.enums.EnumMsgSend; | ||||
| import com.iformall.enums.EnumMsgStatus; | import com.iformall.enums.EnumMsgStatus; | ||||
| @@ -2,20 +2,21 @@ package com.iformall.controller; | |||||
| import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.MailMsg; | |||||
| import com.iformall.domain.po.msg.SmartAppMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxMsgMapper; | import com.iformall.mapper.WxMsgMapper; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.WxMsgRecordService; | import com.iformall.service.WxMsgRecordService; | ||||
| import com.iformall.service.impl.SendCallBackSmsServiceImpl; | |||||
| import com.iformall.service.msg.impl.SendCallBackSmsServiceImpl; | |||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import com.iformall.utils.JsonUtil; | import com.iformall.utils.JsonUtil; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Controller; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import java.util.List; | import java.util.List; | ||||
| @@ -1,9 +1,9 @@ | |||||
| package com.iformall.mq; | package com.iformall.mq; | ||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.*; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxMsgRecordMapper; | import com.iformall.mapper.WxMsgRecordMapper; | ||||
| import com.iformall.service.impl.*; | |||||
| import com.iformall.service.msg.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; | ||||
| @@ -28,6 +28,8 @@ public class MqBaseConsumer { | |||||
| private SendSmartAppMsgServiceImpl sendSmartAppMsgService; | private SendSmartAppMsgServiceImpl sendSmartAppMsgService; | ||||
| @Autowired | @Autowired | ||||
| private SendMpMsgServiceImpl sendMpMsgService; | private SendMpMsgServiceImpl sendMpMsgService; | ||||
| @Autowired | |||||
| private SendWeappUniformMsgServiceImpl sendWeappUniformMsgService; | |||||
| // @Autowired | // @Autowired | ||||
| // private MqBaseProducer mqBaseProducer; | // private MqBaseProducer mqBaseProducer; | ||||
| @@ -53,6 +55,9 @@ public class MqBaseConsumer { | |||||
| } else if(EnumMsgRecordType.PUBLIC.getCode().equals(baseMsg.getMsgType())) { | } else if(EnumMsgRecordType.PUBLIC.getCode().equals(baseMsg.getMsgType())) { | ||||
| //公众号-模板消息 | //公众号-模板消息 | ||||
| sendMpMsgService.send((MpAppMsg)JsonUtil.readValue(message,MpAppMsg.class)); | sendMpMsgService.send((MpAppMsg)JsonUtil.readValue(message,MpAppMsg.class)); | ||||
| } else if(EnumMsgRecordType.SMART_APP_UNIFORM.getCode().equals(baseMsg.getMsgType())) { | |||||
| //微信小程序-统一消息 | |||||
| sendWeappUniformMsgService.send((AppUniformMsg)JsonUtil.readValue(message,AppUniformMsg.class)); | |||||
| } | } | ||||
| baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | ||||
| wxMsgRecordMapper.update(baseMsg); | wxMsgRecordMapper.update(baseMsg); | ||||
| @@ -1,18 +1,15 @@ | |||||
| package com.iformall.controller; | package com.iformall.controller; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxMsgRecord; | |||||
| import com.iformall.mq.MQConfig; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.mq.impl.RabbitMqMessageProducer; | import com.iformall.mq.impl.RabbitMqMessageProducer; | ||||
| import com.iformall.mq.impl.RocketMqMessageProducer; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.context.annotation.Profile; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||
| @@ -1,7 +1,7 @@ | |||||
| package com.iformall.schedule; | package com.iformall.schedule; | ||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| @@ -1,7 +1,7 @@ | |||||
| package com.iformall.schedule; | package com.iformall.schedule; | ||||
| import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
| import com.iformall.domain.po.WxMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxMsgConfigMapper; | import com.iformall.mapper.WxMsgConfigMapper; | ||||
| import com.iformall.mapper.WxMsgMapper; | import com.iformall.mapper.WxMsgMapper; | ||||
| @@ -186,8 +186,10 @@ public enum ErrorCode{ | |||||
| NICK_NAME_NOT_FOUND(11004, "nickName,unionId未授权"), | NICK_NAME_NOT_FOUND(11004, "nickName,unionId未授权"), | ||||
| PHONE_NOT_FOUND(11005, "Phone未授权"), | PHONE_NOT_FOUND(11005, "Phone未授权"), | ||||
| PHONE_IS_ENCRYPTED(11006, "Phone已加密"), | PHONE_IS_ENCRYPTED(11006, "Phone已加密"), | ||||
| TEMPLATE_SEND_FAILED(11007, "模板消息发送失败"), | |||||
| TEMPLATE_SEND_FAILED(11007, "小程序模板消息发送失败"), | |||||
| WE_RUN_DATA_DECODE_ERR(11008, "运动信息解密失败"), | WE_RUN_DATA_DECODE_ERR(11008, "运动信息解密失败"), | ||||
| MP_TEMPLATE_SEND_FAILED(11009, "公众号模板消息发送失败"), | |||||
| UNIFORM_SEND_FAILED(11010, "小程序统一消息发送失败"), | |||||
| /** | /** | ||||
| @@ -0,0 +1,37 @@ | |||||
| package com.iformall.domain.po.msg; | |||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.List; | |||||
| /** | |||||
| * 微信公众号-模板消息 | |||||
| * @author Stormeye | |||||
| * @date 2019/4/9 13:55 | |||||
| */ | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class AppUniformMsg 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="pagePath") | |||||
| private String pagePath; | |||||
| @io.swagger.annotations.ApiModelProperty(value="formId",name="formId") | |||||
| private String formId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="模板类型",name="templateType") | |||||
| private Integer templateType; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="mpAppId") | |||||
| private String mpAppId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号url",name="url") | |||||
| private String url; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号模板主体",name="templateDataList") | |||||
| private List<WxMaTemplateData> templateDataList; | |||||
| } | |||||
| @@ -1,4 +1,4 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -8,7 +9,7 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; | |||||
| import java.util.List; | import java.util.List; | ||||
| /** | /** | ||||
| * 微信公众号模板消息 | |||||
| * 微信公众号-模板消息 | |||||
| * @author Stormeye | * @author Stormeye | ||||
| * @date 2019/4/9 13:55 | * @date 2019/4/9 13:55 | ||||
| */ | */ | ||||
| @@ -28,8 +29,6 @@ public class MpAppMsg extends BaseMsg { | |||||
| private String miniAppId; | private String miniAppId; | ||||
| @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="miniPagePath") | @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="miniPagePath") | ||||
| private String miniPagePath; | private String miniPagePath; | ||||
| @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="appId") | |||||
| private String emphasisKeyword; | |||||
| @io.swagger.annotations.ApiModelProperty(value="公众号模板主体",name="templateDataList") | @io.swagger.annotations.ApiModelProperty(value="公众号模板主体",name="templateDataList") | ||||
| private List<WxMpTemplateData> templateDataList; | private List<WxMpTemplateData> templateDataList; | ||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -1,5 +1,8 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import com.iformall.domain.po.WxCouponInject; | |||||
| import com.iformall.domain.po.WxMsgConfig; | |||||
| import com.iformall.domain.po.WxTags; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -7,7 +10,6 @@ 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; | ||||
| import java.io.Serializable; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.List; | import java.util.List; | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.domain.po; | |||||
| package com.iformall.domain.po.msg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| @@ -10,11 +10,11 @@ import java.util.List; | |||||
| @Data | @Data | ||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||
| public class WxWeappInfo extends WxAuthorizerInfo { | public class WxWeappInfo extends WxAuthorizerInfo { | ||||
| /**小程序类型(1-B端 2-C端)*/ | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序类型(1-B端 2-C端)",name="type") | |||||
| @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") | |||||
| private String tenantId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序类型(1-B端 2-C端 3-服务号 4-订阅号)",name="type") | |||||
| private Integer type; | private Integer type; | ||||
| /**小程序名称*/ | |||||
| @io.swagger.annotations.ApiModelProperty(value="小程序名称",name="name") | @io.swagger.annotations.ApiModelProperty(value="小程序名称",name="name") | ||||
| private String name; | private String name; | ||||
| @@ -22,7 +22,6 @@ public class WxWeappInfo extends WxAuthorizerInfo { | |||||
| { | { | ||||
| Id_ASC("ai.`id` ASC"),Id_DESC("ai.`id` DESC") | Id_ASC("ai.`id` ASC"),Id_DESC("ai.`id` DESC") | ||||
| ,AuthorizerAppid_ASC("ai.`authorizer_appid` ASC"),AuthorizerAppid_DESC("ai.`authorizer_appid` DESC") | ,AuthorizerAppid_ASC("ai.`authorizer_appid` ASC"),AuthorizerAppid_DESC("ai.`authorizer_appid` DESC") | ||||
| ,HeadImg_ASC("ai.`head_img` ASC"),HeadImg_DESC("ai.`head_img` DESC") | ,HeadImg_ASC("ai.`head_img` ASC"),HeadImg_DESC("ai.`head_img` DESC") | ||||
| ,Alias_ASC("ai.`alias` ASC"),Alias_DESC("ai.`alias` DESC") | ,Alias_ASC("ai.`alias` ASC"),Alias_DESC("ai.`alias` DESC") | ||||
| ,QrcodeUrl_ASC("ai.`qrcode_url` ASC"),QrcodeUrl_DESC("ai.`qrcode_url` DESC") | ,QrcodeUrl_ASC("ai.`qrcode_url` ASC"),QrcodeUrl_DESC("ai.`qrcode_url` DESC") | ||||
| @@ -44,6 +43,7 @@ public class WxWeappInfo extends WxAuthorizerInfo { | |||||
| ,OpenAppid_ASC("ai.`open_appid` ASC"),OpenAppid_DESC("ai.`open_appid` DESC") | ,OpenAppid_ASC("ai.`open_appid` ASC"),OpenAppid_DESC("ai.`open_appid` DESC") | ||||
| ,BindOpenTime_ASC("ai.`bind_open_time` ASC"),BindOpenTime_DESC("ai.`bind_open_time` DESC") | ,BindOpenTime_ASC("ai.`bind_open_time` ASC"),BindOpenTime_DESC("ai.`bind_open_time` DESC") | ||||
| ,Name_ASC("a.`name` ASC"),Name_DESC("a.`name` DESC") | ,Name_ASC("a.`name` ASC"),Name_DESC("a.`name` DESC") | ||||
| ,TenantID_ASC("a.`tenant_id` ASC"),TenantID_DESC("a.`tenant_id` DESC") | |||||
| ,Type_ASC("a.`type` ASC"),Type_DESC("a.`type` DESC") | ,Type_ASC("a.`type` ASC"),Type_DESC("a.`type` DESC") | ||||
| ; | ; | ||||
| private String value; | private String value; | ||||
| @@ -10,7 +10,8 @@ public enum EnumMsgRecordType { | |||||
| SMART_APP(4, "小程序"), | SMART_APP(4, "小程序"), | ||||
| PUBLIC(5, "公众号"), | PUBLIC(5, "公众号"), | ||||
| SYSTEM(6, "系统通知"), | SYSTEM(6, "系统通知"), | ||||
| WEBSOCKET_APP(7, "小程序websocket"), | |||||
| SMART_APP_UNIFORM(7, "小程序统一消息"), | |||||
| WEBSOCKET_APP(8, "小程序websocket"), | |||||
| ; | ; | ||||
| public static EnumMsgRecordType getEnum(Integer code) { | public static EnumMsgRecordType getEnum(Integer code) { | ||||
| @@ -17,6 +17,8 @@ public interface WxAuthorizerInfoMapper extends CommonMapper<WxAuthorizerInfo, L | |||||
| WxWeappInfo findVo(WxWeappInfo wxWeappInfo); | WxWeappInfo findVo(WxWeappInfo wxWeappInfo); | ||||
| WxWeappInfo findMp(WxWeappInfo wxWeappInfo); | |||||
| int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo); | int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo); | ||||
| int updateRefreshToken(WxAuthorizerInfo wxAuthorizerInfo); | int updateRefreshToken(WxAuthorizerInfo wxAuthorizerInfo); | ||||
| @@ -2,7 +2,7 @@ package com.iformall.mapper; | |||||
| import java.util.*; | import java.util.*; | ||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| public interface WxMsgMapper extends CommonMapper<WxMsg, String> { | public interface WxMsgMapper extends CommonMapper<WxMsg, String> { | ||||
| @@ -1,8 +1,8 @@ | |||||
| package com.iformall.mapper; | package com.iformall.mapper; | ||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.WxMsgRecord; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import java.util.List; | import java.util.List; | ||||
| @@ -1,6 +1,6 @@ | |||||
| package com.iformall.mq; | package com.iformall.mq; | ||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| public interface MqBaseProducer { | public interface MqBaseProducer { | ||||
| @@ -1,6 +1,6 @@ | |||||
| package com.iformall.mq.impl; | package com.iformall.mq.impl; | ||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.enums.EnumMsgRecordStatus; | import com.iformall.enums.EnumMsgRecordStatus; | ||||
| import com.iformall.mapper.WxMsgRecordMapper; | import com.iformall.mapper.WxMsgRecordMapper; | ||||
| import com.iformall.mq.MQConfig; | import com.iformall.mq.MQConfig; | ||||
| @@ -1,15 +1,12 @@ | |||||
| package com.iformall.mq.impl; | package com.iformall.mq.impl; | ||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.WxMsg; | |||||
| import com.iformall.domain.po.WxMsgRecord; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.enums.EnumMsgRecordStatus; | import com.iformall.enums.EnumMsgRecordStatus; | ||||
| import com.iformall.mapper.WxMsgRecordMapper; | import com.iformall.mapper.WxMsgRecordMapper; | ||||
| import com.iformall.mq.MQConfig; | import com.iformall.mq.MQConfig; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.WxMsgRecordService; | import com.iformall.service.WxMsgRecordService; | ||||
| import com.iformall.utils.JsonUtil; | import com.iformall.utils.JsonUtil; | ||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.apache.rocketmq.client.producer.DefaultMQProducer; | import org.apache.rocketmq.client.producer.DefaultMQProducer; | ||||
| import org.apache.rocketmq.client.producer.SendCallback; | import org.apache.rocketmq.client.producer.SendCallback; | ||||
| import org.apache.rocketmq.client.producer.SendResult; | import org.apache.rocketmq.client.producer.SendResult; | ||||
| @@ -1,7 +1,7 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.WxMsgRecord; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import java.util.List; | import java.util.List; | ||||
| public interface WxMsgRecordService { | public interface WxMsgRecordService { | ||||
| @@ -3,7 +3,7 @@ package com.iformall.service; | |||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxCouponInject; | import com.iformall.domain.po.WxCouponInject; | ||||
| import com.iformall.domain.po.WxMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.domain.po.WxMsgConfig; | import com.iformall.domain.po.WxMsgConfig; | ||||
| public interface WxMsgService { | public interface WxMsgService { | ||||
| @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.MailMsg; | |||||
| import com.iformall.domain.vo.WxBillAll; | import com.iformall.domain.vo.WxBillAll; | ||||
| import com.iformall.domain.vo.WxBillAllVo; | import com.iformall.domain.vo.WxBillAllVo; | ||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| @@ -13,26 +14,17 @@ import com.iformall.exception.MallinkException; | |||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.Constant; | |||||
| import com.iformall.utils.DateUtils; | |||||
| import org.apache.commons.collections.CollectionUtils; | import org.apache.commons.collections.CollectionUtils; | ||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.apache.commons.io.FileUtils; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.poi.ss.usermodel.Cell; | |||||
| import org.apache.poi.ss.usermodel.Row; | |||||
| import org.apache.poi.xssf.usermodel.XSSFSheet; | |||||
| import org.apache.poi.xssf.usermodel.XSSFWorkbook; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.*; | |||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | import java.math.RoundingMode; | ||||
| @@ -7,6 +7,7 @@ import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxCouponInjectMapper; | import com.iformall.mapper.WxCouponInjectMapper; | ||||
| @@ -3,9 +3,7 @@ package com.iformall.service.impl; | |||||
| import cn.afterturn.easypoi.excel.ExcelExportUtil; | import cn.afterturn.easypoi.excel.ExcelExportUtil; | ||||
| import cn.afterturn.easypoi.excel.entity.ExportParams; | import cn.afterturn.easypoi.excel.entity.ExportParams; | ||||
| import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; | import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; | ||||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; | ||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| @@ -16,6 +14,9 @@ import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.dto.WxSharingOrderDto; | import com.iformall.domain.dto.WxSharingOrderDto; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.AppUniformMsg; | |||||
| import com.iformall.domain.po.msg.MpAppMsg; | |||||
| import com.iformall.domain.po.msg.SmartAppMsg; | |||||
| import com.iformall.domain.vo.*; | import com.iformall.domain.vo.*; | ||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| @@ -24,8 +25,7 @@ import com.iformall.mq.MqBaseProducer; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import com.iformall.utils.MaUtil; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | |||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.poi.ss.usermodel.Workbook; | import org.apache.poi.ss.usermodel.Workbook; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -106,6 +106,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| @Autowired | @Autowired | ||||
| MqBaseProducer mqBaseProducer; | MqBaseProducer mqBaseProducer; | ||||
| @Autowired | |||||
| WxAuthorizerInfoMapper authorizerInfoMapper; | |||||
| @Override | @Override | ||||
| public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { | ||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); | ||||
| @@ -590,15 +593,97 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr(); | couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr(); | ||||
| } | } | ||||
| SmartAppMsg smartAppMsg; | |||||
| boolean bUsed = false; | |||||
| String gotopage = "pages/index/index"; | |||||
| String notes = ""; | |||||
| if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { | if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { | ||||
| String gotopage = "pages/index/index"; | |||||
| String notes = ""; | |||||
| if (hadSentCoupon) { | if (hadSentCoupon) { | ||||
| gotopage = "pages/couponorder/index/index"; | gotopage = "pages/couponorder/index/index"; | ||||
| notes = "您有新的券"; | notes = "您有新的券"; | ||||
| } | } | ||||
| bUsed = true; | |||||
| } | |||||
| // 7. 公众号消息 | |||||
| if(StringUtils.isNotBlank(user.getMpAppId()) && StringUtils.isNotBlank(user.getMpOpenId())) { | |||||
| /** | |||||
| * 卡券核销通知 | |||||
| * {{first.DATA}} | |||||
| * 卡券类型:{{keyword1.DATA}} | |||||
| * 卡券号码:{{keyword2.DATA}} | |||||
| * 核销时间:{{keyword3.DATA}} | |||||
| * {{remark.DATA}} | |||||
| */ | |||||
| MpAppMsg mpAppMsg = new MpAppMsg(); | |||||
| mpAppMsg.setMsgType(EnumMsgRecordType.PUBLIC.getCode()); | |||||
| mpAppMsg.setAppId(user.getMpAppId()); | |||||
| mpAppMsg.setTo(user.getMpOpenId()); | |||||
| mpAppMsg.setMiniAppId(user.getAppId()); | |||||
| mpAppMsg.setMiniPagePath(gotopage); | |||||
| mpAppMsg.setTenantId(couponOrder.getTenantId()); | |||||
| mpAppMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode()); | |||||
| mpAppMsg.setTemplateDataList(Lists.newArrayList( | |||||
| new WxMpTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), | |||||
| new WxMpTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), | |||||
| new WxMpTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), | |||||
| new WxMpTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), | |||||
| new WxMpTemplateData("remark", "更多优惠等您来!", "#173177") | |||||
| )); | |||||
| try { | |||||
| mqBaseProducer.sendMessage(mpAppMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | |||||
| } catch (Exception e) { | |||||
| logger.error("核销-公众号-模板消息发送失败: " + e.getMessage()); | |||||
| throw new MallinkException(ErrorCode.MP_TEMPLATE_SEND_FAILED); | |||||
| } | |||||
| return; | |||||
| } else { | |||||
| // 8. 微信小程序-统一消息 | |||||
| // 获取小程序关联的服务号 | |||||
| WxWeappInfo weappInfoQ = new WxWeappInfo(); | |||||
| weappInfoQ.setAuthorizerAppid(user.getAppId()); | |||||
| weappInfoQ.setTenantId(user.getTenantId()); | |||||
| WxWeappInfo weappInfo = authorizerInfoMapper.findMp(weappInfoQ); | |||||
| if(weappInfo != null) { | |||||
| AppUniformMsg appUniformMsg = new AppUniformMsg(); | |||||
| appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode()); | |||||
| appUniformMsg.setAppId(user.getAppId()); | |||||
| appUniformMsg.setTo(user.getOpenId()); | |||||
| appUniformMsg.setTemplateType(EnumTemplateType.VERIFY_RESULT.getCode()); | |||||
| appUniformMsg.setPagePath(gotopage); | |||||
| appUniformMsg.setUrl("http://iformall.com"); | |||||
| appUniformMsg.setMpAppId(weappInfo.getAuthorizerAppid()); | |||||
| appUniformMsg.setTemplateDataList(Lists.newArrayList( | |||||
| new WxMaTemplateData("first", "商家"+merchant.getName()+"的券被核销", "#173177"), | |||||
| new WxMaTemplateData("keyword1", EnumCouponType.getEnum(coupon.getType()).getMessage(), "#173177"), | |||||
| new WxMaTemplateData("keyword2", couponOrder.getId().toString(), "#173177"), | |||||
| new WxMaTemplateData("keyword3", dateFormat.format(new Date()), "#173177"), | |||||
| new WxMaTemplateData("remark", "更多优惠等您来!", "#173177") | |||||
| )); | |||||
| try { | |||||
| mqBaseProducer.sendMessage(appUniformMsg, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | |||||
| } catch (Exception e) { | |||||
| logger.error("核销-公众号-模板消息发送失败: " + e.getMessage()); | |||||
| throw new MallinkException(ErrorCode.UNIFORM_SEND_FAILED); | |||||
| } | |||||
| return; | |||||
| } | |||||
| } | |||||
| // 9. 微信小程序-模板消息 | |||||
| SmartAppMsg smartAppMsg; | |||||
| if (bUsed) { | |||||
| //mq发送小程序消息 - 核销成功消息 | //mq发送小程序消息 - 核销成功消息 | ||||
| /** | |||||
| * 核销成功消息 | |||||
| * 核销金额 {{keyword1.DATA}} | |||||
| * 商家名称 {{keyword2.DATA}} | |||||
| * 商品 {{keyword3.DATA}} | |||||
| * 商品描述 {{keyword4.DATA}} | |||||
| * 订单金额 {{keyword5.DATA}} | |||||
| * 核销时间 {{keyword6.DATA}} | |||||
| * 温馨提示 {{keyword7.DATA}} | |||||
| */ | |||||
| smartAppMsg = new SmartAppMsg(); | smartAppMsg = new SmartAppMsg(); | ||||
| smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); | smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); | ||||
| smartAppMsg.setAppId(user.getAppId()); | smartAppMsg.setAppId(user.getAppId()); | ||||
| @@ -617,13 +702,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| new WxMaTemplateData("keyword7", notes, "#173177"))); | new WxMaTemplateData("keyword7", notes, "#173177"))); | ||||
| smartAppMsg.setEmphasisKeyword("keyword1.DATA"); | smartAppMsg.setEmphasisKeyword("keyword1.DATA"); | ||||
| } else { | } else { | ||||
| //mq发送小程序消息 - 核销失败消息 | |||||
| // mq发送小程序消息 - 核销失败消息 | |||||
| /** | |||||
| * 核销失败消息 | |||||
| * 商品名称 {{keyword1.DATA}} | |||||
| * 核销时间 {{keyword2.DATA}} | |||||
| * 失败原因 {{keyword3.DATA}} | |||||
| * 备注 {{keyword4.DATA}} | |||||
| */ | |||||
| smartAppMsg = new SmartAppMsg(); | smartAppMsg = new SmartAppMsg(); | ||||
| smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); | smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); | ||||
| smartAppMsg.setAppId(user.getAppId()); | smartAppMsg.setAppId(user.getAppId()); | ||||
| smartAppMsg.setTenantId(couponOrder.getTenantId()); | smartAppMsg.setTenantId(couponOrder.getTenantId()); | ||||
| smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); | smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_FAIL.getCode()); | ||||
| smartAppMsg.setGotopage("pages/index/index"); | |||||
| smartAppMsg.setGotopage(gotopage); | |||||
| smartAppMsg.setTo(user.getOpenId()); | smartAppMsg.setTo(user.getOpenId()); | ||||
| smartAppMsg.setReceiver(user.getOpenId()); | smartAppMsg.setReceiver(user.getOpenId()); | ||||
| smartAppMsg.setFormId(formId); | smartAppMsg.setFormId(formId); | ||||
| @@ -10,6 +10,8 @@ import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.MailMsg; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| @@ -36,8 +38,6 @@ import org.springframework.transaction.annotation.Transactional; | |||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.InputStream; | import java.io.InputStream; | ||||
| import java.io.OutputStream; | import java.io.OutputStream; | ||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.*; | |||||
| /** | /** | ||||
| * @author luozukai | * @author luozukai | ||||
| @@ -1,6 +1,5 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| @@ -8,6 +7,7 @@ import com.iformall.common.IdWorker; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.WxMallApplyMapper; | import com.iformall.mapper.WxMallApplyMapper; | ||||
| import com.iformall.mapper.WxMsgConfigMapper; | import com.iformall.mapper.WxMsgConfigMapper; | ||||
| @@ -15,7 +15,6 @@ import com.iformall.mapper.WxMsgValidationcodeMapper; | |||||
| import com.iformall.mapper.WxMsgValidationcodeModelMapper; | import com.iformall.mapper.WxMsgValidationcodeModelMapper; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.WxMallApplyService; | import com.iformall.service.WxMallApplyService; | ||||
| import com.iformall.utils.*; | |||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -1,7 +1,7 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.*; | |||||
| import com.iformall.enums.EnumMsgRecordStatus; | import com.iformall.enums.EnumMsgRecordStatus; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.WxMsgRecordService; | import com.iformall.service.WxMsgRecordService; | ||||
| @@ -6,6 +6,7 @@ import com.iformall.common.IdWorker; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| @@ -1,6 +1,6 @@ | |||||
| package com.iformall.service; | |||||
| package com.iformall.service.msg; | |||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| /** | /** | ||||
| * 发送消息 | * 发送消息 | ||||
| @@ -1,15 +1,17 @@ | |||||
| package com.iformall.service.impl; | |||||
| package com.iformall.service.msg.impl; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.WxMsg; | |||||
| import com.iformall.enums.EnumMsgSendStatus; | import com.iformall.enums.EnumMsgSendStatus; | ||||
| import com.iformall.enums.EnumMsgStatus; | import com.iformall.enums.EnumMsgStatus; | ||||
| import com.iformall.enums.EnumVerifyCode; | import com.iformall.enums.EnumVerifyCode; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import com.iformall.service.WxMsgService; | import com.iformall.service.WxMsgService; | ||||
| import com.iformall.service.WxMsgValidationcodeService; | import com.iformall.service.WxMsgValidationcodeService; | ||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| @@ -1,10 +1,10 @@ | |||||
| package com.iformall.service.impl; | |||||
| package com.iformall.service.msg.impl; | |||||
| import com.iformall.domain.po.BaseMsg; | |||||
| import com.iformall.domain.po.MailMsg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.MailMsg; | |||||
| import com.iformall.domain.po.WxMsgModel; | import com.iformall.domain.po.WxMsgModel; | ||||
| import com.iformall.mapper.WxMsgModelMapper; | import com.iformall.mapper.WxMsgModelMapper; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -1,10 +1,12 @@ | |||||
| package com.iformall.service.impl; | |||||
| package com.iformall.service.msg.impl; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.MpAppMsg; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxTemplateMsgMapper; | import com.iformall.mapper.WxTemplateMsgMapper; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import com.iformall.service.wechat.FmOpenService; | import com.iformall.service.wechat.FmOpenService; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | ||||
| @@ -1,12 +1,14 @@ | |||||
| package com.iformall.service.impl; | |||||
| package com.iformall.service.msg.impl; | |||||
| import cn.binarywang.wx.miniapp.api.WxMaService; | import cn.binarywang.wx.miniapp.api.WxMaService; | ||||
| import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; | import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.SmartAppMsg; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxTemplateMsgMapper; | import com.iformall.mapper.WxTemplateMsgMapper; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import com.iformall.service.WxAppinfoService; | import com.iformall.service.WxAppinfoService; | ||||
| import com.iformall.service.wechat.FmOpenService; | import com.iformall.service.wechat.FmOpenService; | ||||
| import com.iformall.utils.MaUtil; | import com.iformall.utils.MaUtil; | ||||
| @@ -1,15 +1,17 @@ | |||||
| package com.iformall.service.impl; | |||||
| package com.iformall.service.msg.impl; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.WxMsgRecord; | |||||
| import com.iformall.enums.EnumVerifyCode; | import com.iformall.enums.EnumVerifyCode; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.WxMsgConfigMapper; | import com.iformall.mapper.WxMsgConfigMapper; | ||||
| import com.iformall.mapper.WxMsgValidationcodeMapper; | import com.iformall.mapper.WxMsgValidationcodeMapper; | ||||
| import com.iformall.mapper.WxMsgValidationcodeModelMapper; | import com.iformall.mapper.WxMsgValidationcodeModelMapper; | ||||
| import com.iformall.service.MsgSendService; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import com.iformall.service.WxMsgValidationcodeService; | import com.iformall.service.WxMsgValidationcodeService; | ||||
| import com.iformall.utils.WiwideUtil; | import com.iformall.utils.WiwideUtil; | ||||
| import org.apache.commons.collections.CollectionUtils; | import org.apache.commons.collections.CollectionUtils; | ||||
| @@ -0,0 +1,72 @@ | |||||
| package com.iformall.service.msg.impl; | |||||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
| import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.domain.po.msg.AppUniformMsg; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.MpAppMsg; | |||||
| import com.iformall.domain.po.WxTemplateMsg; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.mapper.WxTemplateMsgMapper; | |||||
| import com.iformall.service.msg.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 SendWeappUniformMsgServiceImpl 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{ | |||||
| AppUniformMsg appUniformMsg = (AppUniformMsg)baseMsg; | |||||
| WxTemplateMsg msg = null; | |||||
| WxMaService wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appUniformMsg.getAppId()); | |||||
| // 查询信息模板 | |||||
| WxTemplateMsg msgQ = new WxTemplateMsg(); | |||||
| msgQ.setTenantId(appUniformMsg.getTenantId()); | |||||
| msgQ.setType(appUniformMsg.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); | |||||
| } | |||||
| WxMaUniformMessage.MiniProgram miniprogram = new WxMaUniformMessage.MiniProgram(); | |||||
| miniprogram.setAppid(appUniformMsg.getAppId()); | |||||
| miniprogram.setPagePath(appUniformMsg.getPagePath()); | |||||
| miniprogram.setUsePath(true); | |||||
| WxMaUniformMessage uniformMessage = WxMaUniformMessage.builder() | |||||
| .toUser(appUniformMsg.getTo()) | |||||
| .appid(appUniformMsg.getMpAppId()) | |||||
| .templateId(msg.getTemplateId()) | |||||
| .url(appUniformMsg.getUrl()) | |||||
| .miniProgram(miniprogram) | |||||
| .formId(appUniformMsg.getFormId()) | |||||
| .data(appUniformMsg.getTemplateDataList()) | |||||
| .build(); | |||||
| wxMaService.getMsgService().sendUniformMsg(uniformMessage); | |||||
| } | |||||
| } | |||||
| @@ -254,7 +254,7 @@ | |||||
| where ai.`authorizer_appid` = #{authorizerAppid} | where ai.`authorizer_appid` = #{authorizerAppid} | ||||
| </select> | </select> | ||||
| <select id="findWeappList" resultMap="BaseResultMap"> | |||||
| <select id="findWeappList" resultMap="VBaseResultMap"> | |||||
| select | select | ||||
| <include refid="allVColumns"/> | <include refid="allVColumns"/> | ||||
| from wx_authorizer_info ai | from wx_authorizer_info ai | ||||
| @@ -262,7 +262,7 @@ | |||||
| where a.type = 1 or a.type = 2 | where a.type = 1 or a.type = 2 | ||||
| </select> | </select> | ||||
| <select id="findWxMpList" resultMap="BaseResultMap"> | |||||
| <select id="findWxMpList" resultMap="VBaseResultMap"> | |||||
| select | select | ||||
| <include refid="allVColumns"/> | <include refid="allVColumns"/> | ||||
| from wx_authorizer_info ai | from wx_authorizer_info ai | ||||
| @@ -270,5 +270,14 @@ | |||||
| where a.type = 3 or a.type = 4 | where a.type = 3 or a.type = 4 | ||||
| </select> | </select> | ||||
| <select id="findMp" parameterType="com.iformall.domain.vo.WxWeappInfo" resultMap="VBaseResultMap"> | |||||
| select | |||||
| <include refid="allVColumns"/> | |||||
| from wx_authorizer_info ai | |||||
| left join wx_appinfo a on a.app_id = ai.authorizer_appid | |||||
| where ai.open_appid = (select open_appid from wx_authorizer_info where authorizer_appid = #{authorizerAppid}) | |||||
| and a.`type` = 3 and a.`tenant_id` = #{tenantId} | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||
| <mapper namespace="com.iformall.mapper.WxMsgMapper"> | <mapper namespace="com.iformall.mapper.WxMsgMapper"> | ||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxMsg"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.msg.WxMsg"> | |||||
| <id column="id" jdbcType="BIGINT" property="id" /> | <id column="id" jdbcType="BIGINT" property="id" /> | ||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" /> | <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" /> | ||||
| <result column="model_id" jdbcType="BIGINT" property="modelId" /> | <result column="model_id" jdbcType="BIGINT" property="modelId" /> | ||||
| @@ -125,7 +125,7 @@ | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | <if test=" null != sortColumns"> order by ${sortColumns} </if> | ||||
| </sql> | </sql> | ||||
| <select id="findList" parameterType="com.iformall.domain.po.WxMsg" resultMap="BaseResultMap"> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.msg.WxMsg" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_msg | select <include refid="allColumns" /> from wx_msg | ||||
| <include refid="dynamicWhereConditions" /> | <include refid="dynamicWhereConditions" /> | ||||
| </select> | </select> | ||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||
| <mapper namespace="com.iformall.mapper.WxMsgRecordMapper"> | <mapper namespace="com.iformall.mapper.WxMsgRecordMapper"> | ||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxMsgRecord"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.msg.WxMsgRecord"> | |||||
| <id column="id" property="id" /> | <id column="id" property="id" /> | ||||
| <result column="tenant_id" property="tenantId" /> | <result column="tenant_id" property="tenantId" /> | ||||
| <result column="domain" property="domain" /> | <result column="domain" property="domain" /> | ||||
| @@ -54,7 +54,7 @@ | |||||
| order by createtime desc | order by createtime desc | ||||
| </sql> | </sql> | ||||
| <update id="update" parameterType="com.iformall.domain.po.BaseMsg"> | |||||
| <update id="update" parameterType="com.iformall.domain.po.msg.BaseMsg"> | |||||
| update wx_msg_record set updatetime = now() | update wx_msg_record set updatetime = now() | ||||
| <if test=" null != msgStatus ">,msg_status = #{msgStatus}</if> | <if test=" null != msgStatus ">,msg_status = #{msgStatus}</if> | ||||
| <if test=" null != statusMessage ">,status_message = #{statusMessage}</if> | <if test=" null != statusMessage ">,status_message = #{statusMessage}</if> | ||||
| @@ -63,12 +63,12 @@ | |||||
| </where> | </where> | ||||
| </update> | </update> | ||||
| <select id="findList" parameterType="com.iformall.domain.po.WxMsgRecord" resultMap="BaseResultMap"> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.msg.WxMsgRecord" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_msg_record | select <include refid="allColumns" /> from wx_msg_record | ||||
| <include refid="dynamicWhereConditions" /> | <include refid="dynamicWhereConditions" /> | ||||
| </select> | </select> | ||||
| <insert id="save" parameterType="com.iformall.domain.po.WxMsgRecord" > | |||||
| <insert id="save" parameterType="com.iformall.domain.po.msg.WxMsgRecord" > | |||||
| INSERT INTO wx_msg_record( id,tenant_id,`uuid`, `msg_type`, | INSERT INTO wx_msg_record( id,tenant_id,`uuid`, `msg_type`, | ||||
| `domain`, `msg`, `send_time`, `model_id`, `model_type`, | `domain`, `msg`, `send_time`, `model_id`, `model_type`, | ||||
| `signature`, `sender`, `sender_user_id`, `sender_user_name`, | `signature`, `sender`, `sender_user_id`, `sender_user_name`, | ||||
| @@ -1,12 +1,10 @@ | |||||
| package com.iformall.mq; | package com.iformall.mq; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.enums.EnumMsgRecordDomain; | import com.iformall.enums.EnumMsgRecordDomain; | ||||
| import com.iformall.enums.EnumMsgRecordStatus; | import com.iformall.enums.EnumMsgRecordStatus; | ||||
| import com.iformall.mapper.WxMsgRecordMapper; | import com.iformall.mapper.WxMsgRecordMapper; | ||||
| import com.iformall.service.UserService; | import com.iformall.service.UserService; | ||||
| import com.iformall.util.Constance; | |||||
| 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; | ||||