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版免费开源的微信管家平台。支持微信公众号、小程序、第三方平台等
共2010个文件
java:448个
js:435个
png:270个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 102 浏览量
2023-08-10
15:33:07
上传
评论
收藏 23.31MB ZIP 举报
温馨提示
基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。 基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。 基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。 基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。 基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。基于微信小程序构建的web应用系统,适合毕业设计、课程设计及大作业等。
资源推荐
资源详情
资源评论
收起资源包目录
JAVA版免费开源的微信管家平台。支持微信公众号、小程序、第三方平台等 (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
资源评论
白话机器学习
- 粉丝: 8312
- 资源: 7686
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 免费的-PDF阅读软件
- 数据分析实例(共30张PPT).rar
- 基于知识图谱的推荐算法-MKR的实现pyhton源码+运行说明.zip
- 基于知识图谱的推荐算法-RKGE的实现python源码+运行说明.zip
- 基于知识图谱的推荐算法-NCFG的实现python源码+运行说明.zip
- 基于知识图谱的推荐算法MCRec的python实现源码+项目说明+数据集.zip
- 基于知识图谱的推荐算法-KGCN实现python源码+运行说明.zip
- 学生信息管理系统-数据库课程设计报告.docx
- STM32烟雾检测程序 DHT11温湿度采集 ESP8266WIFI传输数据 1602液显
- 基于知识图谱的推荐算法-KARN的实现python源码+运行说明.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功