费了九牛二虎之力才搞出来的微信扫码授权openid绑定房间

开发公众号时,常常通过扫码绑定信息,

1.首先二维码中包含页面链接,列如注册,我这边写举一个简单的列子

上代码吧

@RequestMapping("/roomsinpage")
public class RoomSinpageController extends BaseController{
	
	@Autowired	private HotelService hotelService;
	
	@Autowired	private RoomTypeService roomTypeService;
	
	@Autowired	private RoomService roomService;		
	
	@Autowired	private WechatInfoService wechatInfoService;
	@Autowired	private BuildService buildService;
	@Autowired	private LayerService layerService;
	@Autowired	private RoomPublicService roomPublicService;
	@Autowired	private HistoryPublicInfoService historyPublicInfoService;
	
    Logger logger = LoggerFactory.getLogger(getClass());

    public static String wxurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=";   
    public static String oauthinfo_uri = "DOMAINMODELCONTEXT/weixin/oauthInfo";
    public static String state = "&response_type=code&scope=snsapi_userinfo&state=DOMAINMODELCONTEXT/pages/sao2.jsp?deviceid=DEVICEID#wechat_redirect";
                
    
    //进入管理页面
    @RequestMapping(method = RequestMethod.GET)
    public String index(@CurrentUser SysUser loginUser,Model model) {    
        return "hotel/room-list-sinpage";
    }//...
    
    @RequestMapping(value = "/layerlist", method = RequestMethod.GET)
    public String layerlist(@CurrentUser SysUser loginUser, long layerid,  Model model) {        	
    	Layer s = this.layerService.getLayer(layerid);  
    	model.addAttribute("photelId", s.getHotel().getId() );
    	model.addAttribute("pbuild", s.getBuild().getBuildno());
    	model.addAttribute("pbuildid", s.getBuild().getId());
    	model.addAttribute("player", s.getLayerno() );
    			 	
        return "hotel/room-list-sinpage";
    }//...
    
                        
    
    //列表结果查询
    @RequestMapping(value = "/list",method = RequestMethod.GET)
    @ResponseBody
    public ApiResponseResult list(Long hotelId, String roomNo, Integer build, Integer layer,   Page$Sort page$Sort){
    	Hotel h = hotelService.getHotel(hotelId);
    	
    	page$Sort.setSort("id");
    	page$Sort.setOrder("DESC");
    	
    	Room con = new Room();
    	con.setHotel(h);
    	if(StringUtils.isNotBlank(roomNo)){
    		con.setRoomNo(roomNo);
    	}
    	if(build!=null && build!=0){
    		Build b = buildService.getBuildByHotelIdAndBuildno(h.getId(), build);
    		con.setBuild(b);
    		
    		if(layer!=null && layer!=0){
        		Layer la = layerService.getByHotelIdAndBuildIdAndLayerno(h.getId(), b.getId(), layer);
        		con.setLayer(la);
        	}    		
    	}
    	
//    	if(StringUtils.isNotBlank(build)){
//    		con.setBuild(Integer.parseInt(build));
//    	}
//    	if(StringUtils.isNotBlank(layer)){
//    		con.setLayer(Integer.parseInt(layer));
//    	}
    	
        Page<Room> resultlist = this.roomService.pageResult(page$Sort, con);       

        return ApiResponseResult.success().data(resultlist);
    }//..
    
    
	@RequestMapping(value="/listcus",method = {RequestMethod.GET})
    @ResponseBody
	public List<RoomType> list(Long hotelId){
		List<RoomType> list = roomTypeService.getRoomTypeByHotelId(hotelId);
		return list;
	}
    
	
    
    //删除
    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    @ResponseBody
    public ApiResponseResult delete(@CurrentUser SysUser loginUser,@PathVariable long id,Model model){
    	
    	Room so = this.roomService.getRoom(id);
    	
    	OpenDoorReq req = new OpenDoorReq();
    	req.setRoomdevno(so.getRoomdevno());
		    	
//    	new Thread(new Runnable(){    			 
//			@Override
//			public void run() {							
//			try {
//				if(OpenDoorUtilMany.delRoomInfo( req, so.getHotel())){					
//				}else{					
//				}		
//			} catch (Exception e) {
//				e.printStackTrace();
//			}				
//			}    			 
//    	}).start();          	
//    	
      this.roomService.delete(id);      
        
      return ApiResponseResult.success();
    }//..    
    
    

	@Autowired	private OperatorInfoService operatorInfoService;
    
	//测试开门
    @RequestMapping(value = "/testopen/{id}", method = RequestMethod.GET)
    @ResponseBody
    public ApiResponseResult testopen(@CurrentUser SysUser loginUser,@PathVariable long id,Model model){
    	Room so = this.roomService.getRoom(id);
    	if(so.getDeviceId()==null||so.getGwId()==null) {
    		return ApiResponseResult.failure("设备或网关未绑定");
    	}
    	OpenDoorReq req = new OpenDoorReq();
    	req.setRoomname(so.getRoomName());
    	req.setRoomno(so.getRoomNo());	
		req.setDevtype(1);
		try {
			
			if(OpenDoorUtilMany.openDoor( req, so.getHotel())){
								
				// 开门记录日志
				String now =  CommonUtil.now();
				HistoryCustomerOperatorInfo ho = new HistoryCustomerOperatorInfo();
				ho.setOpenid(req.getWechat_id());
				ho.setRequestid(req.getRequestid());
				ho.setHotel(so.getHotel());
				ho.setOPTime(now);
				ho.setRoomNo(so.getRoomNo());
				ho.setCustomerName( loginUser.getName() );
				ho.setMobilePhone(loginUser.getPhoneNumber() );
				
				ho.setOperatorMode(WebAdminConstants.OPERATE_MODE_OPENDOOR_TEST);
				ho.setDescription("房间一键开门");       							
				
				operatorInfoService.add(ho);
								
				return ApiResponseResult.success();
			}else{
				return ApiResponseResult.failure("未知问题");
			}
		} catch (Exception e) {
			return ApiResponseResult.failure(e.getMessage());
		}
		
        
    }//..    
    
  //测试开门
    @RequestMapping(value = "/testopenPublic/{id}", method = RequestMethod.GET)
    @ResponseBody
    public ApiResponseResult testopenPublic(@CurrentUser SysUser loginUser,@PathVariable long id,Model model){
    	RoomPublic so=roomPublicService.getRoomPublic(id);
    	if(so.getDeviceId()==null||so.getGwId()==null) {
    		return ApiResponseResult.failure("设备或网关未绑定");
    	}
    	OpenDoorReq req = new OpenDoorReq();
    	req.setRoomname(so.getRoomName());
    	req.setRoomno(so.getRoomNo());			
    	req.setRoomname(so.getRoomName());
    	req.setDevtype(2);
		try {
			
			if(OpenDoorUtilMany.openDoor( req, so.getHotel())){
								
				// 开门记录日志
				String now =  CommonUtil.now();
				HistoryPublicInfo ho = new HistoryPublicInfo();
				ho.setOpenid(req.getWechat_id());
				ho.setRequestid(req.getRequestid());
				ho.setHotel(so.getHotel());
				ho.setOPTime(now);
				ho.setRoomNo(so.getRoomNo());
				ho.setCustomerName( loginUser.getName() );
				ho.setMobilePhone(loginUser.getPhoneNumber() );
				ho.setBackoptime(now);
				ho.setRoomname(so.getRoomName());
				
				ho.setOperatorMode(WebAdminConstants.OPERATE_MODE_OPENDOOR_TEST);
				ho.setDescription("门禁一键开门");       							
				
				historyPublicInfoService.add(ho);
								
				return ApiResponseResult.success();
			}else{
				return ApiResponseResult.failure("未知问题");
			}
		} catch (Exception e) {
			return ApiResponseResult.failure(e.getMessage());
		}
		
        
    }//..    
    
    @RequestMapping(value = "/sysn/{id}", method = RequestMethod.GET)
    @ResponseBody
    public ApiResponseResult sysn(@CurrentUser SysUser loginUser,@PathVariable long id,Model model){
    	
    	return ApiResponseResult.failure("暂不支持");
    	
//    	Room so = this.roomService.getRoom(id);
//    	
//    	OpenDoorReq req = new OpenDoorReq();
//    	req.setRoomname(so.getRoomName());
//    	req.setRoomdevno(so.getRoomdevno());
//		req.setMethod(2);		
//		String roomname = so.getBuild().getBuildno()+"栋"+ so.getLayer().getLayerno()+"层" + so.getRoomName();
//		try {			
//			if(OpenDoorUtilMany.addRoomInfo( req, so.getHotel(),   roomname )){
//				return ApiResponseResult.success();
//			}else{
//				return ApiResponseResult.failure("未知问题");
//			}
//		} catch (Exception e) {
//			return ApiResponseResult.failure(e.getMessage());
//		}
		
        
    }//..    
    
        
    
    @RequestMapping(value = "/sysnhotelall/{id}", method = RequestMethod.GET)
    @ResponseBody
    public ApiResponseResult sysnhotelall(@CurrentUser SysUser loginUser,@PathVariable long id,Model model){
    	
    	return ApiResponseResult.failure("暂不支持");
    	
    	
//    	Hotel h = hotelService.getHotel(id);    	    	    	
//    	List<Room> rmlist = this.roomService.findAll(h.getId());    	
//    	if(rmlist==null || rmlist.size()<1){
//    		return ApiResponseResult.failure(""+"没有房间可同步");
//    	}
//		try {			
//			if(OpenDoorUtilMany.sync_room_info(  h,  rmlist)){
//				return ApiResponseResult.success();
//			}else{
//				return ApiResponseResult.failure("未知问题");
//			}
//		} catch (Exception e) {
//			return ApiResponseResult.failure(e.getMessage());
//		}				
        
    }//..      
    
    
    
    
    //进入 编辑页面 
    @RequestMapping(value="/editPage",method = {RequestMethod.GET})
	public String editPage(Model model,Long id){        	
    	Room c = this.roomService.getRoom(id);
    	   	
		model.addAttribute("id", id);		
		model.addAttribute("hotelId", c.getHotel().getId() );
		        
                        
		return "hotel/room-edit-sinpage";
	}//...    
      
            

    //创建页面
    @RequestMapping(value = "/create", method = RequestMethod.GET)
    public String createNew( Model model){    
        return "hotel/room-edit-sinpage";
    }//...    
        
    
    //保存新增
    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @ResponseBody
     public ApiResponseResult add( Room vo,Long hotelId, Integer build, Integer layer,Model model){        
    	Hotel h = hotelService.getHotel(hotelId);
    	vo.setHotel(h);
    	
   	/*RoomType roomType = this.roomTypeService.getRoomType(roomTypeId);    
    	vo.setRoomType(roomType);*/
    	
    	if(vo.getId()==null  || vo.getId()==0){
    		Room bb = roomService.getRoomByRoomNo(build+"-"+vo.getRoomNo(), hotelId);
        	if(bb!=null){
        		return ApiResponseResult.failure("该房间号已经存在");
        	}        	
    	}    	
    	if(StringUtils.isEmpty( vo.getRoomdevno() )){
    		vo.setRoomdevno( build+"-"+vo.getRoomNo() );
    	}
    	
    	/*if(vo.getRoomPrice()!=0){
    		if(vo.getRoomPrice()==roomType.getRoomPrice()){
    			vo.setRoomPrice(0);
    		}else{
    			vo.setRoomPrice(vo.getRoomPrice()*100);
    		}
    	}
    	if (vo.getRoomPrice() == 0) {
			vo.setRoomPrice(roomType.getRoomPrice());
    	}*/
    	
    	
    	String wxurl = RoomSinpageController.wxurl; 
    	String redirect_uri = RoomSinpageController.oauthinfo_uri; 
    	String state = RoomSinpageController.state; 
    	
    	WechatInfo info = wechatInfoService.getWechatInfoByHotelId(hotelId);
    	if(info==null){
    		if(WebAdminConstants.isgy.equals("1")){
    			info = wechatInfoService.getWechatInfoByHotelId(1l);
    		}
    	}
    	if(info!=null){
    		wxurl = wxurl.replaceAll("APPID", info.getWxappid());
    		redirect_uri = redirect_uri.replaceAll("DOMAIN", info.getDomain() );
    		redirect_uri = redirect_uri.replaceAll("MODELCONTEXT", info.getModelcontext() );    		
//    		redirect_uri = urlEncodeUTF8(redirect_uri);
    		state = state.replaceAll("DOMAIN", info.getDomain() );
    		state = state.replaceAll("MODELCONTEXT", info.getModelcontext() );    
    		String deviceid=h.getAppid()+":"+vo.getRoomdevno();
    		state = state.replaceAll("DEVICEID", deviceid);
    	
    		
    		vo.setWxurl(  urlEncodeUTF8 (  wxurl+ redirect_uri + state  ));    
    		
    	}  //..   		
    	    	
    	    	
    	if(build!=null && build!=0){
    		Build b = buildService.getBuildByHotelIdAndBuildno(hotelId, build);
    		vo.setBuild(b);
    		
    		if(layer!=null && layer!=0){
        		Layer la = layerService.getByHotelIdAndBuildIdAndLayerno(hotelId, b.getId(), layer);
        		vo.setLayer(la);
        	}    		
    	}    	
    	
    	if(StringUtils.isEmpty( vo.getRoomName() )){
    		vo.setRoomName( build+"-"+vo.getRoomNo() );
    	}
    	vo.setRoomNo(build+"-"+vo.getRoomNo());
    	
    	roomService.addOrUpdate(vo);   
    	        Room r=new Room();
    			String nano = System.nanoTime() + "";
    			r.setHotel(h);
    			r.setRoomNo(vo.getRoomNo());
    			r.setRequestid(Long.parseLong(nano.substring(nano.length() - 13)));
    			r.setDevstatus(1);
    			r.setDoortype(0);  //0添加  1,解绑 2,删除
    	        try {
    				super.ImportRoomDev(r);
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				return ApiResponseResult.failure().message(e.getMessage());
    			}
    	
        return ApiResponseResult.success();
    }//...
        
 // 保存新增
 	@RequestMapping(value = "/updateSingle", method = RequestMethod.POST)
 	@ResponseBody
 	public ApiResponseResult update(Room con, Model model) {

// 		Room ro = roomService.getRoomByDeviceId(con.getDeviceId(),con.getRoomNo());

// 		if (ro != null) {
// 			return ApiResponseResult.failure("设备Id已存在,不能重复添加", -1);

// 		} else {
		Room vo = roomService.getRoom(con.getId());
     
		RoomType rt = this.roomTypeService.getRoomType(con.getRoomTypeId());

		vo.setDescription(con.getDescription());
		vo.setRoomType(rt);
		vo.setDoortype(con.getDoortype());
		

		if (con.getRoomPrice() == 0) {
			vo.setRoomPrice(rt.getRoomPrice());
		}else {
			vo.setRoomPrice(con.getRoomPrice()*100);
			
		}

		if (StringUtils.isNotEmpty(con.getRoomName())) {
			vo.setRoomName(con.getRoomName());
		}

		roomService.addOrUpdate(vo);

// 		}

 		return ApiResponseResult.success();
 	}// ...

    
    
    
    public static String urlEncodeUTF8(String source) {
    	String result = source;
    	try{
    		result = java.net.URLEncoder.encode(source,"utf-8");
    		}catch(UnsupportedEncodingException e){
    			e.printStackTrace();
    		}
    	return result;
    }//...
         

    //查看详情 
    @RequestMapping(value="/detail",method = {RequestMethod.GET})
	@ResponseBody
	public ApiResponseResult detail(Long id){
    	Room s = this.roomService.getRoom(id);    	
		return ApiResponseResult.success().data(s);
	}//..
    
    //设备
    @RequestMapping(value="/sbsearch",method = {RequestMethod.GET})
	@ResponseBody
	public ApiResponseResult sbsearch(Room con,Long hotelId){
    	Room ro = roomService.getRoomByDeviceId(con.getDeviceId(), hotelId);
    	
    	if (ro != null) {
 			return ApiResponseResult.failure("设备Id已存在,不能重复添加", -1);

 		} else {
 			System.out.println(con.getRoomNo());
 			Room so =roomService.getRoomByRoomNo(con.getRoomNo(),hotelId);
 			so.setDeviceId(con.getDeviceId());
 			so.setBarry(0l);
 			so.setBarrytime(null);
 			so.setRecenttime(null);
 			roomService.addOrUpdate(so);
	}//..
    	return ApiResponseResult.success();
    }
      
}//end

主要代码部分是wxurl的生成,也就是其生成二维码的参数生成

 //保存新增
    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @ResponseBody
     public ApiResponseResult add( Room vo,Long hotelId, Integer build, Integer layer,Model model){        
    	Hotel h = hotelService.getHotel(hotelId);
    	vo.setHotel(h);
    	
   	/*RoomType roomType = this.roomTypeService.getRoomType(roomTypeId);    
    	vo.setRoomType(roomType);*/
    	
    	if(vo.getId()==null  || vo.getId()==0){
    		Room bb = roomService.getRoomByRoomNo(build+"-"+vo.getRoomNo(), hotelId);
        	if(bb!=null){
        		return ApiResponseResult.failure("该房间号已经存在");
        	}        	
    	}    	
    	if(StringUtils.isEmpty( vo.getRoomdevno() )){
    		vo.setRoomdevno( build+"-"+vo.getRoomNo() );
    	}
    	
    	/*if(vo.getRoomPrice()!=0){
    		if(vo.getRoomPrice()==roomType.getRoomPrice()){
    			vo.setRoomPrice(0);
    		}else{
    			vo.setRoomPrice(vo.getRoomPrice()*100);
    		}
    	}
    	if (vo.getRoomPrice() == 0) {
			vo.setRoomPrice(roomType.getRoomPrice());
    	}*/
    	
    	
    	String wxurl = RoomSinpageController.wxurl; 
    	String redirect_uri = RoomSinpageController.oauthinfo_uri; 
    	String state = RoomSinpageController.state; 
    	
    	WechatInfo info = wechatInfoService.getWechatInfoByHotelId(hotelId);
    	if(info==null){
    		if(WebAdminConstants.isgy.equals("1")){
    			info = wechatInfoService.getWechatInfoByHotelId(1l);
    		}
    	}
    	if(info!=null){
    		wxurl = wxurl.replaceAll("APPID", info.getWxappid());
    		redirect_uri = redirect_uri.replaceAll("DOMAIN", info.getDomain() );
    		redirect_uri = redirect_uri.replaceAll("MODELCONTEXT", info.getModelcontext() );    		
//    		redirect_uri = urlEncodeUTF8(redirect_uri);
    		state = state.replaceAll("DOMAIN", info.getDomain() );
    		state = state.replaceAll("MODELCONTEXT", info.getModelcontext() );    
    		String deviceid=h.getAppid()+":"+vo.getRoomdevno();
    		state = state.replaceAll("DEVICEID", deviceid);
    	
    		
    		vo.setWxurl(  urlEncodeUTF8 (  wxurl+ redirect_uri + state  ));    
    		
    	}  //..   		
    	    	
    	    	
    	if(build!=null && build!=0){
    		Build b = buildService.getBuildByHotelIdAndBuildno(hotelId, build);
    		vo.setBuild(b);
    		
    		if(layer!=null && layer!=0){
        		Layer la = layerService.getByHotelIdAndBuildIdAndLayerno(hotelId, b.getId(), layer);
        		vo.setLayer(la);
        	}    		
    	}    	
    	
    	if(StringUtils.isEmpty( vo.getRoomName() )){
    		vo.setRoomName( build+"-"+vo.getRoomNo() );
    	}
    	vo.setRoomNo(build+"-"+vo.getRoomNo());
    	
    	roomService.addOrUpdate(vo);   
    	        Room r=new Room();
    			String nano = System.nanoTime() + "";
    			r.setHotel(h);
    			r.setRoomNo(vo.getRoomNo());
    			r.setRequestid(Long.parseLong(nano.substring(nano.length() - 13)));
    			r.setDevstatus(1);
    			r.setDoortype(0);  //0添加  1,解绑 2,删除
    	        try {
    				super.ImportRoomDev(r);
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				return ApiResponseResult.failure().message(e.getMessage());
    			}
    	
        return ApiResponseResult.success();
    }//...

我这边是生成房间的同时生成相关联的房间二维码信息,方便后面扫码的参数获取

2.扫码

 

手机微信扫一扫识别二维码,如下

3.确认绑定,我这边是openid和房间号关联,需要触发公众号接口,也就是sao2.jsp如下

<%@page import="com.bochiot.amain.StringConst"%>
<%@ page language="java"  pageEncoding="UTF-8"%>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<meta http-equiv="Cache-Control" content="no-cache"/>  
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<meta http-equiv="description" content="申请微信开门业务">
<meta http-equiv="author" content="铂智科技">
<meta http-equiv="date" content="2018-1-4">

<!-- https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxa46160863e938c91&redirect_uri=http%3A%2F%2Fpku.bochiot.com%2Fweixin%2FoauthInfo&response_type=code&scope=snsapi_userinfo&state=http://pku.bochiot.com/pages/home.jsp#wechat_redirect -->


<title>扫一扫绑定房间</title>

<%		  
		
		String openID = request.getParameter("openID");
        String nickName=request.getParameter("nickname");
		if(openID != null){
// 			session.setAttribute("openID", openID);
		}		
		String openid = "";
		String nickname="";
		try{
			openid = (String)session.getAttribute("openID");
			nickname=(String)session.getAttribute("nickname");
		}catch(Exception e){			
		}
		if(openid == null || openid.equals("")){
			response.sendRedirect("./warm_usewx.jsp");
		}	
		String deviceid1 = request.getParameter("deviceid");
		
		String[] deviceid2 = deviceid1.split(":");
		String appid = deviceid2[0];
		String deviceid=deviceid2[1];
		
%> 


<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.cookie.js"></script>


<script type="text/javascript">

$(document).ready(function(){		
				
	$("#contact").submit();		
		  		
	WeixinJSBridge.call('closeWindow');
	
});



</script>


</head>





<body>

		<div class="form_black m_2 p_2 mt1">  
	 	
		     <form id="contact"  name="contact"  method="get"  action="../bozhi/openRoom?action=saoyisao" >
		      
		          <input type="text"  id="action"  name="action"  value="saoyisao"  />	
		          
		          <input type="text"  id="appid"  name="appid"  value="<%=appid %>"  />	
		          
		          <input type="text"  id="deviceid"  name="deviceid"  value="<%=deviceid %>"  />	
		          
		          <input type="text"  id="openid"  name="openid"  value="<%=openid %>"  />	
		          
		          <input type="text"  id="nickname"  name="nickname"  value="<%=nickname %>"  />	
		          					 
				  <input class="block btn_fill_green mt_1 wp100 hp100 f3"  id="bind_btn" 
			     name="bind_btn"  type="submit" value="绑定"/>
				
		     </form>

		</div>
		
	
</body>
</html>

也就是接口../bozhi/openRoom?action=saoyisao 

 

if ("saoyisao".equals(action)) {
				this.saoyisao(request, response);
				return;
			}

转入

protected void saoyisao(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			L.i(TAG, "saoyisao start");
			
			// openID
		/*	String openId = (String) request.getSession().getAttribute("openid");
			String nickname1=(String)request.getSession().getAttribute("nickname");
			if (openId == null) {
				response.sendRedirect(OauthUtil.MycreateOauth(MainConst.getDomain_bozhi() + "passOpen"));
				L.d(TAG, "openID == null");
				return;
			}*/

			
			String deviceid = request.getParameter("deviceid");
			String appid=request.getParameter("appid");
			String openid = request.getParameter("openid");
			String nickname=request.getParameter("nickname");
	
			if (deviceid != null) {	
				
				JSONObject result = null;
				String errorMsg = "";
			
				
				ENUM_BOZHI_RESULT enum_BOZHI_RESULT = ENUM_BOZHI_RESULT.MSG_ERR_INVALID;
				try {					
					//扫一扫微信id和房间绑定
					result = HttpGyRentUserService.sendCmd_AUTH_SCAN( deviceid, openid,appid,nickname);
					
					enum_BOZHI_RESULT = ENUM_BOZHI_RESULT.getCODE(result.getInt("code"));		
					
					
					if (enum_BOZHI_RESULT == ENUM_BOZHI_RESULT.MSG_SUCCESS) {
						
						JSONObject data = result.getJSONObject("data");
						int room_number = 0;
						try {
							room_number = data.getInt("room_number");
						} catch (Exception e) {
							e.printStackTrace();
						}		
												
//						response.sendRedirect(MainConst.getDomain_pages() + "successed.html");
						L.d(TAG, "successed  "   + " room : " + room_number);
						
						// 客服消息
						WeixinKFUtil.sendText(MainConst.getToken(), openid,
								String.format(StringConst.WEIXIN_TEXT_BIND_SUCCESSED, room_number));

					} else {
						errorMsg = result.getString("message");
						String errString = String.format(StringConst.WEIXIN_WEB_ERR_BINDROOM_CONTENT,
								ENUM_BOZHI_RESULT.getStatusString(enum_BOZHI_RESULT, errorMsg, errorMsg));
						
						WeixinKFUtil.sendText(MainConst.getToken(), openid, errString);
					
						L.e(TAG, "failed result value : " + enum_BOZHI_RESULT.getValue() + " deviceid : " + deviceid);
					}



				} catch (Exception e) {
					e.printStackTrace();
				}

			}

		}//get 

 4.跳到service配置

	result = HttpGyRentUserService.sendCmd_AUTH_SCAN( deviceid, openid,appid,nickname);

5.转入HttpGyRentUserService

//微信扫一扫绑定
	public  static JSONObject sendCmd_AUTH_SCAN(String deviceid, String openid,String appid,String nickname) throws IOException {
		
		JSONObject info = new JSONObject();
		info.put("wechat_id", openid);
		info.put("deviceid", deviceid);
		info.put("appid", appid);
		info.put("nickname", nickname);
		return HttpRequestUtils.sendCmdToServer(sendCmd_AUTH_SCAN,info);
	}//...

里面关联服务器的路径

public static String sendCmd_AUTH_SCAN=WxConfiguration.URL_PREFIX + "api/gyrentclient/userToauth";   //微信扫一扫授权
  sendCmd_AUTH_SCAN=WxConfiguration.URL_PREFIX + "api/gyrentclient/userToauth";   //微信扫一扫授权

6.转入服务器后台GyRentClientController

接收处理数据:

  @RequestMapping(value = "/userToauth",method = RequestMethod.POST, consumes = "application/json")
    public ApiResponseResult userToauth(@RequestBody OpenDoorReq req){
    	Hotel h=hotelService.getHotelByAppid(req.getAppid());
    	RoomUser roomUser=roomUserService.getRoomOpen(h.getId(), req.getDeviceid(), req.getWechat_id());
    	if(roomUser!=null) {
    		//进入公众号租户的页面显示所绑定的房间
    	}
    	
    	RoomUser roomUser2=new RoomUser();
    	roomUser2.setHotel(h);
    	roomUser2.setRoomNo(req.getDeviceid());
    	roomUser2.setOpenid(req.getWechat_id());
    	roomUser2.setNickname(req.getNickname());
    	RoomUser roomUser3=roomUserService.addOrUpdate(roomUser2);
    	//进入公众号租户的页面显示所绑定的房间
    	
    	return ApiResponseResult.success();
    }

7.openid和 房间进行绑定插入到数据库

好插入成功,绑定成功。

重点:1.我这边是用草料的二维码生成网址,生成网址最重要的参数要明确

           2.扫码获取内容正确

           3.获取内容传入接口入参,进行业务逻辑处理 

 

 

 

 

 

 

 

 

 

posted @ 2022-08-11 18:50  码海兴辰  阅读(143)  评论(0)    收藏  举报