package top.cynara.cwechat.controller;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import top.cynara.cwechat.entitiy.ActiveUser;
import top.cynara.cwechat.entitiy.CwechatAccess;
import top.cynara.cwechat.entitiy.CwechatFollowUser;
import top.cynara.cwechat.entitiy.ReceiveWechatMessage;
import top.cynara.cwechat.entitiy.ReplayWechatMessage;
import top.cynara.cwechat.service.CwechatAccessService;
import top.cynara.cwechat.service.CwechatFollowUserService;
import top.cynara.cwechat.service.ReceiveWechatMessageService;
import top.cynara.cwechat.service.ReplayWechatMessageService;
import top.cynara.cwechat.utils.CwechatConnectionUtil;
import top.cynara.cwechat.utils.ReceiveXmlToMessageUtil;
/**
* @ClassName CwechatController
* @Description 处理用户关于微信的请求
* @author Cynara-remix http://cynara.top
* E-mail remix7@live.cn
* @date 2016年10月18日 下午10:24:07
* @version V1.0
*/
@Controller
public class CwechatController {
private Logger log = Logger.getLogger(CwechatController.class);
@Autowired
private CwechatAccessService service;
@Autowired
private ReceiveWechatMessageService messageService;
@Autowired
private ReplayWechatMessageService replayWechatMessageService;
@Autowired
private CwechatFollowUserService cwechatFollowUserService;
/**
* @Title followmeById
* @Description 获取该用户的详细信息
* @param openId
* @return
* @author Cynara-remix
* @Date 2016年10月16日 下午9:56:05
*/
@RequestMapping("/followme/{openId}")
public String followmeById(@PathVariable("openId")String openId,HttpSession session,
Map<String, Object> map){
ActiveUser user = (ActiveUser) session.getAttribute("activeUser");
CwechatAccess access = service.findAllByUserId(user.getUserid()).get(0);
Map<String, String> resMap = CwechatConnectionUtil.findUserByOpenId(access.getAppid(), access.getSecret(), openId);
log.debug("<!----------用户:"+user.getUsername()+"获取"+openId+" 详细信息成功!----------!>");
map.put("rMap", resMap);
return "followview";
}
/**
* @Title followme
* @Description 获取用户关注列表
* @param map
* @param session
* @return
* @author Cynara-remix
* @Date 2016年10月16日 下午9:54:31
*/
@RequestMapping("/followme")
public String followme(Map<String, Object> map,HttpSession session){
ActiveUser user = (ActiveUser) session.getAttribute("activeUser");
CwechatAccess access = service.findAllByUserId(user.getUserid()).get(0);
List<CwechatFollowUser> cfuList = cwechatFollowUserService.findAllByAccessId(access.getId());
map.put("cList", cfuList);
log.debug("<!----------用户:"+user.getUsername()+"获取微信关注列表成功!长度为:"+cfuList.size()+"----------!>");
return "followme";
}
/**
* @Title message
* @Description 查看消息详情
* @param 消息id
* @param map
* @return
* @author Cynara-remix
* @Date 2016年10月15日 下午9:02:58
*/
@RequestMapping("/message/{id}")
public String message(@PathVariable("id")String id,Map<String, Object> map){
ReceiveWechatMessage receiveWechatMessage = messageService.findById(id);
ReplayWechatMessage replayWechatMessage = replayWechatMessageService.findByReceiveId(receiveWechatMessage.getId());
map.put("recMessage",receiveWechatMessage);
map.put("repMessage", replayWechatMessage);
log.debug("<!----------id为:"+id+"的消息被查看----------!>");
return "message";
}
/**
* @Title messageList
* @Description 用户接入微信收到的消息列表
* @return
* @author Cynara-remix
* @Date 2016年10月14日 下午10:14:53
*/
@RequestMapping("/messageList")
public String messageList(HttpSession session,Map<String, Object> map){
ActiveUser user = (ActiveUser) session.getAttribute("activeUser");
List<CwechatAccess> accessList = service.findAllByUserId(user.getUserid());
List<ReceiveWechatMessage> receiveWechatMessagesList = new ArrayList<ReceiveWechatMessage>();
for (CwechatAccess cwechatAccess : accessList) {
List<ReceiveWechatMessage> messages = messageService.findAllByToUserName(cwechatAccess.getOriginalId());
receiveWechatMessagesList.addAll(messages);
}
log.debug("<!----------用户:"+user.getUsername()+" 查看微信收到的消息---------->");
map.put("rwmList", receiveWechatMessagesList);
return "messageList";
}
/**
* @Title requestRrocessing
* @Description 微信消息接入接口
* @param request
* @param response
* @throws Exception
* @author Cynara-remix
* @Date 2016年10月15日 下午9:04:01
*/
@ResponseBody()
@RequestMapping(value="/accessWechat",method=RequestMethod.POST)
public void requestRrocessing(HttpServletRequest request,HttpServletResponse response)throws Exception{
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
try {
Map<String, String> xmls = ReceiveXmlToMessageUtil.parseXml(request, response);
String sendMessage = ReceiveXmlToMessageUtil.parseMessage(xmls,messageService,replayWechatMessageService);
response.getWriter().write(sendMessage);
} catch (Exception e) {
log.debug("<!-----------微信发来消息服务器处理异常"+e+"----------!>");
}
log.debug("<!---------微信发来消息服务器处理正常----------!>");
}
/**
* @Title addAccess
* @Description 添加接入的微信
* @param access
* @param result
* @param map
* @param session
* @param randomcode
* @author Cynara-remix
* @Date 2016年10月15日 下午9:05:10
*/
@RequestMapping(value="/addAccess",method=RequestMethod.POST)
public String addAccess(@Valid CwechatAccess access,BindingResult result
,Map<String, Object> map,HttpSession session
,@RequestParam("randomcode")String randomcode){
String validateCode = (String) session.getAttribute("validateCode");
//判断验证码是否一致
if(!validateCode.equals(randomcode)){
//为了在页面使用if判断 如果出错此值不为空就能显示国际化的提示消息
log.error("<!----------微信接入信息验证码出错!---------->");
map.put("randomCode", "!");
map.put("access", access);
return "addAccess";
}
//判断是否有错误
if(result.getAllErrors().size()!=0){
for(FieldError error : result.getFieldErrors()){
map.put(error.getField(), error.getDefaultMessage());
log.error("<!----------微信接入信息字段验证出错!"+error.getField()+" : "+error.getDefaultMessage()+"----------!>");
}
map.put("access", access);
return "addAccess";
}
CwechatAccess ca = service.findByAppId(access.getAppid());
if(ca!=null){
log.error("<!----------微信接入信息appid 重复!----------!>");
return "addAccess";
}
access.setAccessDate(new Date());
access.setId(UUID.randomUUID().toString());
access.setIsTrue("1");
ActiveUser user = (ActiveUser) session.getAttribute("activeUser");
access.setUserId(user.getUserid());
service.insert(access);
log.info("<!----------微信接入成功:"+user.getUsername()+"
机智的程序员zero
- 粉丝: 2459
- 资源: 4741
最新资源
- Apparat 餐厅,使用 C# 和 SlimDX 制作的开源游戏模拟引擎。.zip
- 视觉图像处理,2D 或 3D 实时视频或来自摄像头、网络摄像头或扫描仪的静止图像的视觉图像处理.......zip
- ARSoft.MultiRulePolicyDaemon 反垃圾邮件守护程序
- 使用 Expression Tree 以 C# 编写的规则引擎.zip
- 这是一个适用于 Windows 的简单免费开源 闹钟,MIT 许可闹钟。它不到 100 行代码。用 Visual Studio C# 2010 EE 编写。.zip
- 应用程序管理库,应用程序管理使您的应用程序生活更轻松。它将自动进行内存管理,处理和记录未处理的异常,分析您的函数,使您的应用程序成为单个实例,并提供 util 函数来获取系统信息。.zip
- 检测人笑脸的程序;微笑会传递
- C#自动设备上位机应用 PLC OPC 监控曲线 数据保存导出 完整工程项目代码,vs2015或以上开发或调试 UI是DevExpress组件,可编译,可修改,可调试,这是一个工业应用上位机,下位
- Python图形绘制实例:用Turtle模块绘制创意南瓜头
- S7-1200控制5轴伺服程序案例 1.PTO伺服轴脉冲定位控制功能应用+速度模式应用+扭矩模式应用 2.程序为结构化编程,每一功能为模块化设计,具有一个项目都有的功能:自动-手动-单步-暂停
- 2025届南网面试宝典
- 分布式能源接入分析matlab 通过分布式能源的选址定容确定得到帕累托最优解集,然后选择最优值进行分析,模型为双层模型,程序采用改进粒子群算法
- 基于Python Turtle模块实现奥林匹克五环图案的绘制
- 西门子200 SMART椎栈缓存程序 字节、字数据堆栈缓存示例 由于该PLC的填充和块移动指令移动个数为0一255. 缓存数据多一点就没办法实现,要么成1200的 本程序功能由西门子工程师通过循环和
- 扫频式频谱仪中频算法仿真代码
- 2025南方电网讲义电分-纯图版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈