cy
2022-06-21 129904537f66509f97b285e7eb4f42b3dc349dd0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
package cn.ksource.web.controller.wechat;
 
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
import cn.ksource.beans.GG_MESSAGE;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.DownloadUtil;
import cn.ksource.core.util.HttpCharset;
import cn.ksource.core.util.HttpUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.ParamsMapUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.WebUtil;
import cn.ksource.core.weixin.service.WeiXinCoreService;
import cn.ksource.web.Constants;
import cn.ksource.web.SysConstants;
import cn.ksource.web.controller.wechat.response.RspTextMessage;
import cn.ksource.web.controller.wechat.util.MessageUtil;
import cn.ksource.web.controller.wechat.util.SignUtil;
import cn.ksource.web.controller.wechat.util.WechatConstants;
import cn.ksource.web.facade.JsglFacade;
import cn.ksource.web.facade.cfg.CfgFacade;
import cn.ksource.web.facade.file.FileFacade;
import cn.ksource.web.facade.wechat.WechatFacade;
import cn.ksource.web.service.wechat.WechatService;
 
/**
 * 微信公众平台开发
 * @author jxl
 */
 
@Controller
@RequestMapping("/wechat")
public class WechatController {
 
    @Resource(name="wechatFacade")
    private WechatFacade wechatFacade;
    
    @Resource(name="wechatService")
    private WechatService wechatService;
    
    @Autowired
    private WeiXinCoreService weiXinCoreService;
    
    @Autowired
    private JsglFacade jsglFacade;
    @Autowired
    private CfgFacade cfgFacade;
    
    /**
     * 执行微信的服务器的doGet请求,确认请求来自微信服务器 
     */
    @RequestMapping(value="index.html",method=RequestMethod.GET)
    public void index(HttpServletRequest request,HttpServletResponse response) {
        //微信加密签名
        String signature = request.getParameter("signature");  
        // 时间戳  
        String timestamp = request.getParameter("timestamp");  
        // 随机数  
        String nonce = request.getParameter("nonce");  
        // 随机字符串  
        String echostr = request.getParameter("echostr");  
  
        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败  
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {  
            WebUtil.write(response, echostr);
        }  
    }
    
    
    /**
     * 执行微信的post请求
     */
    @RequestMapping(value="index.html",method=RequestMethod.POST)
    public void indexPost(HttpServletRequest request,HttpServletResponse response) throws Exception {
       System.out.println("enter doPost method ========================");
        
         // 将请求、响应的编码均设置为UTF-8(防止中文乱码)  
       request.setCharacterEncoding("UTF-8");  
       response.setCharacterEncoding("UTF-8");
       
       //调用核心业务类接收消息、处理消息  
       
       String respContent = "欢迎来到微信公众平台!"; 
 
       // xml请求解析  
       Map<String, String> requestMap = MessageUtil.parseXml(request);  
 
       // 发送方帐号(open_id)  
       String fromUserName = requestMap.get("FromUserName");
       System.out.println("formUserName----------------->"+fromUserName);
       // 公众帐号  
       String toUserName = requestMap.get("ToUserName");  
       // 消息类型  
       String msgType = requestMap.get("MsgType");
       
       if(msgType.equals(MessageUtil.RESP_MESSAGE_TYPE_TEXT)) {
           String msgContent = requestMap.get("Content");
           System.out.println("msgContent---------------------->"+msgContent);
           if(msgContent.equals(WechatConstants.GGSBD)) {
               //工程师绑定
               //判断该工程师是否已经执行过绑定操作
               boolean hasBind = wechatFacade.queryEngineerHasBind(fromUserName);
               System.out.println("hasBind============="+hasBind);
               if(hasBind) {
                   respContent = "您已绑定过账号,点击<a href='"+WechatConstants.ENGINEER_UNBIND_ADDRESS+"?openId="+fromUserName+"'>解除绑定</a>";
               } else {
                   //respContent = "您未绑定该账号,请点击<a href='"+MessageUtil.ENGINEER_BIND_ADDRESS+"?openId="+fromUserName+"'>立即绑定</a>";
                   respContent = "您未绑定该账号,请点击<a href='"+WechatConstants.ENGINEER_BIND_ADDRESS+"?openId="+fromUserName+"'>立即绑定</a>";
               }
           } else if(msgContent.equals(WechatConstants.USER)) {
               respContent = "用户登录,请点击<a href='"+WechatConstants.SQ_REBACK+"'>登录</a>";
           } else if(msgContent.substring(0,2).equalsIgnoreCase(WechatConstants.ZSK)) {
               //respContent = wechatFacade.queryZsk(request,msgContent);
           }
       } else if(msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
           String eventKey = requestMap.get("EventKey");
           System.out.println("eventKey---------------->"+eventKey);
           if(StringUtil.notEmpty(eventKey)) {
               if(eventKey.equals(WechatConstants.BX)) {
                   //查询用户是否已经绑定过账号,如果已经绑定过,则直接报修,否则跳转到用户绑定页面
                   //respContent = wechatFacade.doRepair(fromUserName);
               } else if (eventKey.equals(WechatConstants.LINK_US)) {
                   respContent = "联系电话:<a href='tel:400-633-7959'>400-633-7959</a>\n产品官网:<a href='http://www.larks.com.cn'>http://www.larks.com.cn</a>";
               }
           }
       }
       // 回复文本消息  
       RspTextMessage textMessage = new RspTextMessage();
       textMessage.setToUserName(fromUserName);  
       textMessage.setFromUserName(toUserName);  
       textMessage.setCreateTime(new Date().getTime());  
       textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
       textMessage.setContent(respContent);
       
       System.out.println("公众号响应微信用户的信息:");
       String respMessage = MessageUtil.textMessageToXml(textMessage);
       
       System.out.println(respMessage);
       // 响应消息
       WebUtil.write(response, respMessage);
    }
    
    
    /**
     * 点击微运维跳转,如果用户已经绑定过工程师账号或者已经绑定过客户账号,
     * 则跳转到工程师首页面或者客户首页面,
     * 否则跳转到用户类型选择页面,执行相应的绑定操作
     */
    @RequestMapping("wywType.html")
    public ModelAndView wywType(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView();
        String code = request.getParameter("code");
        System.out.println("code---------------------------"+code);
        String url = WechatConstants.CODE_GET_TOKEN.replace("CODE", code);
        String valString = HttpUtil.doGet(url, new HashMap<String, String>(), HttpCharset.UTF8);
        Map map = JsonUtil.json2Map(valString);
 
        String openId = ConvertUtil.obj2StrBlank(map.get("openid"));
//        String openId = "123456";
        //String openId = "fwt";
        //判断openId是否已经绑定过工程师信息
        if(StringUtil.isNotBlank(openId)){
            String result = wechatFacade.queryGcsBind(request,openId);
            if(result.equals("1")) {
                //判断用户桌面类型
                String jumpUrl = Constants.getWxDeskTopUrl(Constants.ROLE_FLINE);
                List<Map> roles = jsglFacade.getRolesByUserId(WebUtil.getEngineerUserId(request), 1);
                if(roles.size()==1){
                    String identify = ConvertUtil.obj2StrBlank(roles.get(0).get("identify"));
                    if (StringUtil.isNotBlank(identify)) {
                        jumpUrl = Constants.getWxDeskTopUrl(identify);
                    }
                }
                
                request.getSession().setAttribute("homePage", jumpUrl);
                //System.out.println("jumpUrl------------------->"+jumpUrl+"------------>"+deskType);
                return new ModelAndView("redirect:"+jumpUrl);
            }
            
            //判断openId是否已经绑定过用户信息
            String userResult = wechatFacade.queryCustomerBind(request,openId);
            if(userResult.equals("1")) {
                return new ModelAndView("redirect:/uwyw/uhome.html");
            } 
        }
        modelAndView.setViewName("/business/wechat/wywType");
        modelAndView.addObject("openId", openId);
        return modelAndView;
    }
    
    
    /**
     * 跳转到工程师绑定页面
     */
    
    /*@RequestMapping("engineerBind.html")
    public ModelAndView engineerBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/engineerBind");
        return modelAndView;
    }*/
    
    @RequestMapping("engineerBind.html")
    public ModelAndView engineerBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/engineerBind");
        
        String jsapi_ticket = weiXinCoreService.getJsApiTicket();
        System.out.println("jsapi_ticket------------>"+jsapi_ticket);
        
        
        String requestUrl = request.getRequestURI(); 
        String queryString = request.getQueryString();
        String url = new String();
        if(StringUtil.notEmpty(queryString)) {
            url = requestUrl.toString()+"?"+queryString;
        } else {
            url = requestUrl.toString();
        }
        
        url = WechatConstants.BASE_ADDRESS + url;
        System.out.println("url---------->"+url);
        //获取jsApiTicket的签名
        Map<String, String> signParam = SignUtil.sign(jsapi_ticket, url);
        
        modelAndView.addObject("signParam",signParam);
        
        modelAndView.addObject("appId", WechatConstants.appID);
        
        return modelAndView;
    }
    
    
    /**
     * 执行工程师绑定操作
     */
    @RequestMapping("doEngineerBind.html")
    public void doEngineerBind(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.updateEngineerOpenId(request);
        String url = new String();
        
        String ciId = ConvertUtil.obj2StrBlank(request.getSession().getAttribute("ciId"));
        if(StringUtil.notEmpty(ciId)) {
            url = "/ewyw/ewconfig/econfigInfo.html?id="+ciId;
            request.getSession().removeAttribute("ciId");
        }else {
            if(result.equals("1")) {
                url = WebUtil.getEngineerDeskType(request);
            }
        }
        Map resultMap = new HashMap();
        resultMap.put("flag", result);
        resultMap.put("url", url);
        WebUtil.write(response, JsonUtil.map2Json(resultMap));
    }
    
    /**
     * 跳转到工程师解除绑定页面
     */
    @RequestMapping("engineerUnbind.html")
    public ModelAndView engineerUnbind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/engineerUnbind");
        String jsapi_ticket = weiXinCoreService.getJsApiTicket();
        StringBuffer requestURL = request.getRequestURL(); 
        String queryString = request.getQueryString();
        String url = new String();
        if(StringUtil.notEmpty(queryString)) {
            url = requestURL.toString()+"?"+queryString;
        } else {
            url = requestURL.toString();
        }
        //获取jsApiTicket的签名
        Map<String, String> signParam = SignUtil.sign(jsapi_ticket, url);
        modelAndView.addObject("signParam",signParam);
        return modelAndView;
    }
    
    /**
     * 执行工程师解除绑定操作
     */
    @RequestMapping("doEngineerUnbind.html")
    public void doEngineerUnbind(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.updateEngineerUnBindOpenId(request);
        WebUtil.write(response, result);
    }
    
    
    
    /**
     * 发送模板消息
     */
    @RequestMapping("sendTemplateMsg.html")
    public void sendTemplateMsg(HttpServletRequest request,HttpServletResponse response) {
        wechatService.sendTemplateMsg(new String[]{"oKOyDtx1DmObD8hDfIhAqs46TDbM"},"e8c17ff9df6a4e0bae475f6fcfd85147", "2","江小磊","测试报账工单", "测试报账工单");
    }
    
    /**
     * 发送催办消息
     */
    @RequestMapping("sendReminderMsg")
    public void sendReminderMsg(HttpServletRequest request,HttpServletResponse response) {
        wechatService.sendReminderTemplateMsg(new String[]{"oKOyDtx1DmObD8hDfIhAqs46TDbM"},"e8c17ff9df6a4e0bae475f6fcfd85147","2","这是催办事项标题", "这是催办事项具体内容", "这是催办人","这是催办消息的备注");
    }
    
    
    /**
     * 测试发送系统消息
     */
    @RequestMapping("sendSysMsg.html")
    public void sendSysMsg(HttpServletRequest request) {
        GG_MESSAGE message = new GG_MESSAGE();
        message.setContent("测试内容");
        message.setTitle("测试标题");
        message.setSend_time(DateUtil.getCurrentDate14());
        message.setSender_name("testuser");
        message.setWx_url("http://www.baidu.com");
        message.setWeb_url("http://www.baidu.com");
        wechatService.sendSysMsg(new String[]{"oKOyDtx1DmObD8hDfIhAqs46TDbM"}, message);
    }
    
    
    /**
     * 测试绑定通知消息
     */
    @RequestMapping("testBind.html")
    public void testBind(HttpServletRequest request,HttpServletResponse response) {
        //如果绑定成功,提醒微信绑定成功通知
        wechatService.bindingNotice("ou0vYt5mLwOCe8lIM0R1tykonCHM","http://www.baidu.com","wxh","liuzhengyu","测试开通功能","测试备注");
    }
    
    /**
     * 微信测试登录页面
     */
    @RequestMapping(value="testwywLogin.html", method=RequestMethod.GET)
    public ModelAndView testwywLogin(HttpServletRequest request,HttpServletResponse response) {
            ModelAndView modelAndView = new ModelAndView("/business/wechat/testwywLogin");
            
            return modelAndView;
    }
    
    
    /**
     * 微信测试登录页面
     */
    @RequestMapping(value="testwywLogin.html", method=RequestMethod.POST)
    public void testwywLoginSubmit(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.checkLoginMsg(request);
        WebUtil.write(response, result);
    }
    
    
    /**
     * 跳转到用户绑定页面
     */
    @RequestMapping("customerBind.html")
    public ModelAndView customerBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView();
        
        String openId = request.getParameter("openId");
        System.out.println("openid------------->"+openId);
        
        String result = wechatFacade.queryCustomerBind(request,openId);
        if(result.equals("1")) {
            return new ModelAndView("redirect:/uwyw/uhome.html");
        } else {
            modelAndView.setViewName("/business/wechat/customerBind");
            modelAndView.addObject("openId", openId);
        }
        return modelAndView;
    }
    
    
    /**
     * 跳转到用户绑定页面
     */
    @RequestMapping("userBind.html")
    public ModelAndView userBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/customerBind");
        String openId = request.getParameter("openId");
        modelAndView.addObject("openId", openId);
        return modelAndView;
    }
    
    
    /**
     * 执行用户绑定操作
     */
    @RequestMapping("doCustomerBind.html")
    public void doCustomerBind(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.updateCustomerBindOpenId(request);
        WebUtil.write(response, result);
    }
    
    
    
    
    /**
     * 跳转到用户解除绑定页面
     */
    @RequestMapping("customerUnbind.html")
    public ModelAndView customerUnbind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/customerUnbind");
        /*String jsapi_ticket = weiXinCoreService.getJsApiTicket();
        StringBuffer requestURL = request.getRequestURL(); 
        String queryString = request.getQueryString();
        String url = new String();
        if(StringUtil.notEmpty(queryString)) {
            url = requestURL.toString()+"?"+queryString;
        } else {
            url = requestURL.toString();
        }
        //获取jsApiTicket的签名
        Map<String, String> signParam = SignUtil.sign(jsapi_ticket, url);
        modelAndView.addObject("signParam",signParam);*/
        return modelAndView;
    }
    
    /**
     * 执行用户解除绑定操作
     */
    @RequestMapping("doCustomerUnbind.html")
    public void doCustomerUnbind(HttpServletRequest request,HttpServletResponse response) {
        System.out.println("解除绑定-------------------");
        String result = wechatFacade.updateCustomerUnBindOpenId(request);
        WebUtil.write(response, result);
    }
    
    
    
    
    
    
    
    /**
     * 微运维链接
     */
    @RequestMapping("wyw.html")
    public ModelAndView wyw(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("redirect:"+WechatConstants.SQ_REBACK);
        return modelAndView;
    }
    
    
    
    
    /**
     * 测试发送消息
     */
    @RequestMapping("sendMsg.html")
    public void sendMsg(HttpServletRequest request) {
        GG_MESSAGE message = new GG_MESSAGE();
        message.setContent("测试内容");
        message.setSend_time(DateUtil.getCurrentDate14());
        message.setSender_name("jiangxiaolei");
        message.setWx_url("http://www.baidu.com");
        message.setTitle("测试消息");
        wechatService.sendSysMsg(new String[]{"oKOyDt9RluzdluTQU-xljU2H3EzI","oKOyDtx1DmObD8hDfIhAqs46TDbM"}, message);
    }
    
    /**
     * 测试
     */
    @RequestMapping("page.html")
    public ModelAndView page(HttpServletRequest request,HttpServletResponse response) throws Exception {
        System.out.println("enter-------------->page");
        String SQ_BACK_URL = WechatConstants.BASE_ADDRESS+"/wechat/testGz.html";
        String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+WechatConstants.appID+"&redirect_uri="+URLEncoder.encode(SQ_BACK_URL,"UTF-8")+"&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
        System.out.println("enter-------------->page1");
        ModelAndView modelAndView = new ModelAndView("redirect:"+url);
        System.out.println("enter-------------->page2");
        return modelAndView;
    }
    
    @RequestMapping("testknow.html")
    public void testKnow(HttpServletRequest request,HttpServletResponse response) {
        String content = "";
        //wechatFacade.queryZsk(request,"z@鼠标");
        WebUtil.write(response, content);
    }
    
    @RequestMapping("testGz.html")
    public ModelAndView testGz(HttpServletRequest request,HttpServletResponse response) {
        System.out.println("----------------->enter testGz.html");
        String code = request.getParameter("code");
        System.out.println("---->code---------->"+code);
        String url = WechatConstants.CODE_GET_TOKEN.replace("CODE", code);
        
        String valString = HttpUtil.doGet(url, new HashMap<String, String>(), HttpCharset.UTF8);
        Map map = JsonUtil.json2Map(valString);
        String openId = ConvertUtil.obj2StrBlank(map.get("openid"));
        System.out.println("openid------------->"+openId);
        
        if(StringUtil.notEmpty(openId)) {
            //通过openId 获取
            Map userBaseMap = wechatService.queryUserBaseMsgByOpenId(openId);
            System.out.println("subscribe----------------->"+ConvertUtil.obj2StrBlank(userBaseMap.get("subscribe")));
            System.out.println("msg----------------------->"+JsonUtil.map2Json(userBaseMap));
        }
        ModelAndView modelAndView = new ModelAndView("redirect:http://mp.weixin.qq.com/s?__biz=MzA3ODg3NjIwMA==&mid=203995057&idx=1&sn=7a2cce78d23c95184f3076320feb161e#rd");
        return modelAndView;
        
    }
    
    public static void main(String[] args) {
        String url = WechatConstants.SQ_REBACK;
        System.out.println(url);
    }
    
    /*------客户端登陆之前---------*/
    /**
     * 跳转到获取ime的页面
     * */
/*    @RequestMapping("clientLoginBefore.html")
    public ModelAndView clientLoginBefore(HttpServletRequest request){
        return new ModelAndView("/business/wechat/client/clientLoginBefore");
    }*/
    
    /*------客户端嵌入登录---start---*/
    
    /**
     * 点击微运维跳转,如果用户已经绑定过工程师账号或者已经绑定过客户账号,
     * 则跳转到工程师首页面或者客户首页面,
     * 否则跳转到用户类型选择页面,执行相应的绑定操作
     */
    @RequestMapping("clientWywType.html")
    public ModelAndView clientwywType(HttpServletRequest request,HttpServletResponse response) {
        String ime = request.getParameter("ime");
        System.out.println(ime);
        ModelAndView modelAndView = new ModelAndView();
        if(StringUtil.isNotBlank(ime)){
            //判断当前手机ime是否绑定工程师信息
            String engResult = wechatFacade.queryEmgIme(request, ime);
            if(engResult.equals("1")){
                //判断用户桌面类型
                String jumpUrl = Constants.getWxDeskTopUrl(Constants.ROLE_FLINE);
                List<Map> roles = jsglFacade.getRolesByUserId(WebUtil.getEngineerUserId(request), 1);
                if(roles.size()==1){
                    String identify = ConvertUtil.obj2StrBlank(roles.get(0).get("identify"));
                    if (StringUtil.isNotBlank(identify)) {
                        jumpUrl = Constants.getWxDeskTopUrl(identify);
                    }
                }
                request.getSession().setAttribute("homePage", jumpUrl);
                System.out.println("jumpUrl------------------->"+jumpUrl+"------------>");
                return new ModelAndView("redirect:"+jumpUrl);
            }
            String userResult = wechatFacade.queryUserIme(request, ime);
            if(userResult.equals("1")){
                return new ModelAndView("redirect:/uwyw/uhome.html");
            }
        }
        
        modelAndView.setViewName("/business/wechat/client/clientWywType");
        return modelAndView;
    }
    
    /**
     * 跳转到工程师绑定页面
     */
    
    @RequestMapping("clientEngineerBind.html")
    public ModelAndView clientEngineerBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/client/clientEngineerBind");
        wechatFacade.deleteClientEngineer(request);
        HttpSession session = request.getSession();
        session.removeAttribute(SysConstants.WYW_ENGINEER_LOGIN_INFO_KEY);
        session.removeAttribute("homePage");
        session.removeAttribute("isclient");
        session.invalidate();
        return modelAndView;
    }
    
    /**
     * 跳转到用户绑定页面
     */
    @RequestMapping("clientCustomerBind.html")
    public ModelAndView clientCustomerBind(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView();
        wechatFacade.deleteClientCustomer(request);
        HttpSession session = request.getSession();
        session.removeAttribute(SysConstants.WYW_LOGIN_INFO_KEY);
        session.removeAttribute("isclient");
        session.invalidate();
        modelAndView.setViewName("/business/wechat/client/clientCustomerBind");
        return modelAndView;
    }
    
    /**
     * 执行工程师绑定操作
     */
    @RequestMapping("doClientEngineerBind.html")
    public void doClientEngineerBind(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.updateClientEngineer(request);
        String url = new String();
        if(result.equals("1")) {
            url = WebUtil.getEngineerDeskType(request);
        }
        Map resultMap = new HashMap();
        resultMap.put("flag", result);
        resultMap.put("url", url);
        WebUtil.write(response, JsonUtil.map2Json(resultMap));
    }
    
    /**
     * 执行用户绑定操作
     */
    @RequestMapping("doClientCustomerBind.html")
    public void doClientCustomerBind(HttpServletRequest request,HttpServletResponse response) {
        String result = wechatFacade.updateClientCustomer(request);
        WebUtil.write(response, result);
    }
    
    /**
     * 跳转到session中转页面
     */
    @RequestMapping("clientTemp.html")
    public ModelAndView clientTemp(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/business/wechat/clientTemp");
        String user = request.getParameter("user");
        modelAndView.addObject("url", WechatConstants.SQ_REBACK);
        modelAndView.addObject("user", user);
        return modelAndView;
    }
    
    /**
     * 微信扫码跳转详情
     */
    @RequestMapping("cfgInfo.html")
    public ModelAndView cfgInfo(HttpServletRequest request) {
        String ciId = request.getParameter("id");
        Map engineer = WebUtil.getEngineerMsg(request);
        if(null!=engineer && engineer.size()>0) {
            ModelAndView modelAndView = new ModelAndView("redirect:/ewyw/ewconfig/econfigInfo.html?id="+ciId);
            return modelAndView;
        }
        
        Map user = WebUtil.getWywLoginUser(request);
        if(null!=user && user.size()>0) {
            ModelAndView modelAndView = new ModelAndView("redirect:/uwyw/uconfig/uconfigInfo.html?id="+ciId);
            return modelAndView;
        }
        
        request.getSession().setAttribute("ciId", ciId);
        ModelAndView modelAndView = new ModelAndView("redirect:"+WechatConstants.SQ_REBACK);
        return modelAndView;
    }
    
    @Autowired
    private FileFacade fileFacade;
    
    /**
     * 文件下载
     */
    @RequestMapping("download.html")
    public void download(HttpServletRequest request,HttpServletResponse response) {
        String fileId = request.getParameter("fileId");
        Map fileMsg = fileFacade.queryFileMsg(fileId);
        if(null!=fileMsg && fileMsg.size()>0) {
            String fileName = ConvertUtil.obj2StrBlank(fileMsg.get("FILE_NAME"));
            String filePath = ConvertUtil.obj2StrBlank(fileMsg.get("FILE_PATH"));
            String basePath = request.getSession().getServletContext().getRealPath("");
            File file = new File(basePath+filePath);
            try {
                DownloadUtil.download(response, file, fileName, false);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    @RequestMapping("sysversion.html")
    public void sysversion(HttpServletRequest request,HttpServletResponse response) {
        Map version = wechatFacade.getVersion();
        WebUtil.write(response, JsonUtil.map2Json(version));
    }
    /**
     * 设备详情
     * @param request
     * @return
     */
    @RequestMapping("facDetail")
    public ModelAndView facDetail(HttpServletRequest request){
        ModelAndView view=new ModelAndView("/business/wechat/facDetail");
        String id = request.getParameter("id");
        Map info= cfgFacade.getCfgById(id);
        view.addObject("info", info);
        return view;
    }
    /**
     * 一键报修页面
     * @param request
     * @return
     */
    @RequestMapping("facBx.html")
    public ModelAndView ucYjbx(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("/business/wechat/facBx");
        String id = request.getParameter("id");
        Map info= cfgFacade.getCfgById(id);
        modelAndView.addObject("info", info);
        return modelAndView;
    }
    @RequestMapping("saveFacBx.html")
    public void saveFacBx(HttpServletRequest request,HttpServletResponse response){
        Map<String,String> params=ParamsMapUtil.getParameterMap(request);
        wechatFacade.saveFacBx(params);
        WebUtil.write(response, "1");
    }
}