iotadmin/src/main/java/com/lp/controller/iot/IotWechatViewController.java

115 lines
3.9 KiB
Java

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<String, String> 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<String,Object> 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<String,Object> 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<String,Object> 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");
}
}