package com.jeecg.p3.weixin.service.impl;
import com.jeecg.p3.baseApi.util.EmojiFilter;
import com.jeecg.p3.commonweixin.entity.MyJwWebJwid;
import com.jeecg.p3.commonweixin.util.DateUtils;
import com.jeecg.p3.message.entity.WeixinGroupMessageSendDetail;
import com.jeecg.p3.message.service.WeixinGroupMessageSendDetailService;
import com.jeecg.p3.qrcode.entity.WeixinQrcode;
import com.jeecg.p3.qrcode.entity.WeixinQrcodeScanRecord;
import com.jeecg.p3.qrcode.service.WeixinQrcodeScanRecordService;
import com.jeecg.p3.qrcode.service.WeixinQrcodeService;
import com.jeecg.p3.system.service.MyJwWebJwidService;
import com.jeecg.p3.weixin.entity.*;
import com.jeecg.p3.weixin.service.*;
import com.jeecg.p3.weixin.util.MessageUtil;
import com.jeecg.p3.weixin.util.WeiXinConstants;
import com.jeecg.p3.weixin.util.WeixinUtil;
import com.jeecg.p3.weixin.vo.WeixinMessageDTO;
import com.jeecg.p3.weixin.vo.resp.Article;
import com.jeecg.p3.weixin.vo.resp.NewsMessageResp;
import com.jeecg.p3.weixin.vo.resp.TextMessageResp;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtil;
import org.jeecgframework.p3.core.util.oConvertUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
/**
* 微信消息处理
* @author LeeShaoQing
* @since 20180723
*/
@Service("wechatService")
public class WechatServiceImpl implements WechatService {
public final static Logger log = LoggerFactory.getLogger(WechatServiceImpl.class);
@Autowired
private WeixinAutoresponseService weixinAutoresponseService;
@Autowired
private WeixinTexttemplateService weixinTexttemplateService;
@Autowired
private WeixinNewstemplateService weixinNewstemplateService;
@Autowired
private WeixinNewsitemService weixinNewsitemService;
@Autowired
private MyJwWebJwidService myJwWebJwidService;
@Autowired
private WeixinAutoresponseDefaultService weixinAutoresponseDefaultService;
@Autowired
private WeixinMenuService weixinMenuService;
@Autowired
private WeixinSubscribeService weixinSubscribeService;
@Autowired
private WeixinReceivetextService weixinReceivetextService;
@Autowired
private WeixinGzuserService weixinGzuserService;
@Autowired
private WeixinQrcodeService weixinQrcodeService;
@Autowired
private WeixinQrcodeScanRecordService weixinQrcodeScanRecordService;
@Autowired
private WeixinGroupMessageSendDetailService weixinGroupMessageSendDetailService;
@Override
public String coreService(HttpServletRequest request) {
log.info(" ------------接受微信客户端消息,进入逻辑处理开始------------");
String respMessage = "";
try {
// xml请求解析
Map<String, String> requestMap = MessageUtil.parseXml(request);
log.info(" ---------解析微信客户端消息完成-----MessageUtil.parseXml-------");
//消息存储-非事件消息
if(!MessageUtil.REQ_MESSAGE_TYPE_EVENT.equals(requestMap.get("MsgType"))) {
log.info(" ---------保存微信客户端消息进数据库-------");
saveReceiveMessage(requestMap);
}
log.info(" -----微信客户端消息------: {}", requestMap.toString());
//写入通用DTO类中方便传递参数
WeixinMessageDTO weixinMessageDTO = new WeixinMessageDTO();
// 发送方帐号(OpenId)
weixinMessageDTO.setFromUserName(requestMap.get("FromUserName"));
// 公众帐号(JWID)
weixinMessageDTO.setToUserName(requestMap.get("ToUserName"));
// 消息类型
weixinMessageDTO.setMsgType(requestMap.get("MsgType"));
//消息ID
weixinMessageDTO.setMsgId(requestMap.get("MsgId"));
//消息内容
weixinMessageDTO.setContent(requestMap.get("Content"));
//多媒体ID
weixinMessageDTO.setMediaId(requestMap.get("MediaId"));
//菜单key
weixinMessageDTO.setKey(requestMap.get("EventKey"));
//Event(事件)
weixinMessageDTO.setEvent(requestMap.get("Event"));
//【微信触发类型】文本消息
if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
respMessage = doTextResponse(weixinMessageDTO, request);
}
//【微信触发类型】图片消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
respMessage = doImageResponse(weixinMessageDTO, request);
}
//【微信触发类型】地理位置消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
respMessage = doLocationeResponse(weixinMessageDTO, request);
}
//【微信触发类型】链接消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
respMessage = doLinkResponse(weixinMessageDTO, request);
}
//【微信触发类型】音频消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
respMessage = doVoiceResponse(weixinMessageDTO, request);
}
//【微信触发类型】视频消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.RESP_MESSAGE_TYPE_VIDEO)) {
respMessage = doVideoResponse(weixinMessageDTO, request);
}
//【微信触发类型】小视频消息
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_SHORTVIDEO)) {
respMessage = doShortVideoResponse(weixinMessageDTO, request);
}
//【微信触发类型】事件推送
else if (weixinMessageDTO.getMsgType().equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
// 事件类型
String eventType = weixinMessageDTO.getEvent();
// 订阅
if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
try {
respMessage = doSubscribeEventResponse(weixinMessageDTO, request);
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理订阅事件异常:--------------"+e.toString());
}
//扫描二维码
}else if(eventType.equals(MessageUtil.EVENT_TYPE_SCAN)){
try {
//update-begin--Author:sunkai Date:20180904 for:扫码关注事件--------------------
String sceneId = weixinMessageDTO.getKey();
respMessage = doScanEventResponse(weixinMessageDTO,sceneId, request);
//update-end--Author:sunkai Date:20180904 for:扫码关注事件--------------------
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理扫描二维码事件异常:--------------"+e.toString());
}
}
// 取消订阅
else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
try {
respMessage = doUnsubscribeEventResponse(weixinMessageDTO, request);
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理取消订阅事件异常:--------------"+e.toString());
}
}
//上报地理位置事件
else if(eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)){
try {
respMessage = doLocationEventResponse(weixinMessageDTO, request);
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理上报地理位置事件异常:--------------"+e.toString());
}
}
// 自定义菜单点击事件(Click)
else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
try {
respMessage = doMyMenuEventResponse(weixinMessageDTO, request);
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理微信请求[Click]事件异常:--------------"+e.toString());
}
}
// 自定义菜单点击事件(VIEW)
else if (eventType.equals(MessageUtil.EVENT_TYPE_VIEW)) {
try {
respMessage = doMyMenuViewEventResponse(weixinMessageDTO, request);
} catch (Exception e) {
e.printStackTrace();
log.error("-----处理微信请求[View]事件异常:--------------"+e.toString());
}
}
// 其他事件
else {
try {
respMessage
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
JAVA版免费开源的微信管家平台。支持微信公众号、小程序、第三方平台等。平台已经实现了公众号基础管理、群发、系统权限、抽奖活动、小程序官网等功能,便于二次开发,可以快速搭建微信应用! 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-JAVA版免费开源的微信管家平台。.zip (2010个子文件)
._extend 222B
Upload.asp 5KB
Upload.aspx 106B
Upload.aspx 106B
Upload.asp.cls 14KB
Upload.aspx.cs 4KB
components-rounded.css 351KB
summernote-bs3.css 143KB
style.css 133KB
index.css 133KB
bootstrap.2.3.2.css 124KB
bootstrap.css 120KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
bootstrap-switch.min.css 118KB
bootstrap.min.2.3.1.css 103KB
bootstrap.min.css 97KB
change_module.css 81KB
foxui.min.css 77KB
web_frame.css 75KB
jquery-weui.css 66KB
animate.css 64KB
Module_style.css 63KB
animate.min.css 60KB
comm.min.css 60KB
base.min.css 52KB
style.css 51KB
weui.min.css 50KB
main_1.css 48KB
index.css 46KB
index.css 46KB
cms.css 36KB
weixin_cms.css 36KB
datepicker3.css 33KB
base.css 32KB
base.css 32KB
webskin.css 32KB
font-awesome.css 32KB
bootstrap-rtl.css 31KB
index.css 29KB
jquery-ui.css 26KB
font-awesome.min.css 26KB
ambiance.css 25KB
style.min.css 25KB
wxast.css 25KB
main.min.css 23KB
HMo_style.css 22KB
iconfont.css 21KB
swiper.min.css 19KB
swiper.min.css 19KB
page_mp_article_improve_combo231ee1.css 19KB
sweetalert.css 18KB
coupon.css 18KB
columnStyle.css 17KB
umeditor.css 17KB
simditor.css 17KB
index.css 17KB
bootstrap-responsive.min.2.3.1.css 16KB
ui.jqgrid.css 16KB
web_memberCenter.css 16KB
font-awesome.min_1.css 15KB
select2.min.css 15KB
theme.css 15KB
index.min.css 15KB
coupon-new.css 14KB
appmsg_edit2.css 14KB
layer.css 14KB
umeditor.min.css 14KB
jasny-bootstrap.min.css 14KB
jquery-ui-1.10.4.custom.min.css 14KB
main.css 13KB
show.css 13KB
chosen.css 12KB
style.css 12KB
style.css 12KB
bootstrap-datetimepicker.css 12KB
dropzone.css 11KB
layer.css 11KB
layer.css 11KB
layim.css 11KB
spectrum.css 11KB
icomoon_style.css 11KB
fullcalendar.css 11KB
simple-line-icons.min.css 11KB
denglu.css 11KB
summernote.css 10KB
style.css 10KB
base.css 10KB
plyr.css 10KB
mathquill.css 9KB
shCoreDefault.css 9KB
index.css 8KB
uniform.default.min.css 8KB
webuploader-demo.css 7KB
codemirror.css 7KB
activity-style.css 7KB
iconSet.css 7KB
zTreeStyle_user.css 7KB
zTreeStyle_user.css 7KB
metroStyle.css 7KB
共 2010 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Android、Java 和 Kotlin Multiplatform 的现代 I,O 库 .zip
- 高通TWS蓝牙规格书,做HIFI级别的耳机用
- Qt读写Usb设备的数据
- 这个存储库适合初学者从 Scratch 开始学习 JavaScript.zip
- AUTOSAR 4.4.0版本Rte模块标准文档
- 25考研冲刺快速复习经验.pptx
- MATLAB使用教程-初步入门大全
- 该存储库旨在为 Web 上的语言提供新信息 .zip
- 考研冲刺的实用经验与技巧.pptx
- Nvidia GeForce GT 1030-GeForce Studio For Win10&Win11(Win10&Win11 GeForce GT 1030显卡驱动)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功