package com.lp.controller.iot; import com.lp.bo.ContactUserInfoBO; import com.lp.bo.IotVideoInfoBO; import com.lp.bo.UserInfoBO; import com.lp.controller.BaseController; import com.lp.util.BrowserJudge; import com.lp.util.LogUtil4j; import com.lp.util.ObjectUtil; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.api.WxMpServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; 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.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; @Controller public class IotWechatViewController extends BaseController { protected final static Logger LOGGER = LoggerFactory.getLogger(IotWechatViewController.class); private final static String VIEW_PATH = "/wechat/iot/" ; @Resource(name = "wxMpService") private WxMpServiceImpl wxMpService; /** * 获取jsapi ticket * * @param req * @param url * @throws WxErrorException */ private void getJsApiTicket(HttpServletRequest req, String url) { Map ret; try { ret = BrowserJudge.Weixin.sign(wxMpService.getJsapiTicket(), url); req.setAttribute("noncestr", ret.get("nonceStr")); req.setAttribute("timestamp", ret.get("timestamp")); req.setAttribute("signature", ret.get("signature")); } catch (WxErrorException e) { e.printStackTrace(); } } @RequestMapping(method = RequestMethod.GET, value = "/wiot/{viewName}") public String wechatPage(HttpServletRequest req, HttpServletResponse resp, @PathVariable String viewName) { setModelWeb(req,viewName); LogUtil4j.debugLogger.debug("------------------++++++++++++++++++ get view {}", viewName); return VIEW_PATH + viewName; } private void setModelWeb(HttpServletRequest req , String viewName){ if("edevice".equals(viewName) || "deviceConfigwifi".equals(viewName) || "edevicescene".equals(viewName) ){ // 增加微信公众号的识别 if(ObjectUtil.isEmpty(req.getQueryString())){ getJsApiTicket(req, req.getRequestURL().toString()); }else{ getJsApiTicket(req, req.getRequestURL().toString() + "?"+req.getQueryString()); } } } @RequestMapping(method = RequestMethod.GET, value = "/wiot/user") public ModelAndView userInfo(HttpServletRequest req, HttpServletResponse resp) { Map resultData = getResultMap(); try{ UserInfoBO user = getUserInfoBySession(req); // 查询子账户的数量 UserInfoBO userInfo = new UserInfoBO() ; userInfo.setAid(user.getId()); int num = service.count("UserInfo.selectCount", userInfo); putData(resultData, num); }catch(Exception e){ exception(e,resultData); } return getModelAndView(resp, resultData,VIEW_PATH+"user","info"); } @RequestMapping(method = RequestMethod.GET, value = "/wiot/live") public ModelAndView live(HttpServletRequest req, HttpServletResponse resp ,@RequestParam Integer id ) { Map resultData = getResultMap(); try{ resultData = service.selectOne("IotVideoInfo.selectOne", new IotVideoInfoBO(id)); }catch(Exception e){ exception(e,resultData); } return getModelAndView(resp, resultData,VIEW_PATH+"live","info"); } @RequestMapping(method = RequestMethod.GET, value = "/wiot/cbind") public ModelAndView cbind(HttpServletRequest req, HttpServletResponse resp ,@RequestParam Integer id ) { Map resultData = getResultMap(); try{ ContactUserInfoBO obj = new ContactUserInfoBO(id); resultData = service.selectOne("ContactUserInfo.selectOne", obj ) ; }catch(Exception e){ exception(e,resultData); } return getModelAndView(resp, resultData,VIEW_PATH+"cbind","info"); } }