Browse Source

'优化getFirst1接口,调整登录传参方式'

james 1 year ago
parent
commit
8a90028172

+ 178 - 171
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/WeChatController.java

@@ -23,7 +23,6 @@ import lombok.extern.slf4j.Slf4j;
 import ma.glasnost.orika.impl.util.StringUtil;
 import ma.glasnost.orika.impl.util.StringUtil;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
-import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.enums.WxMpApiUrl;
 import me.chanjar.weixin.mp.enums.WxMpApiUrl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,7 +33,6 @@ import org.springframework.web.client.RestTemplate;
 import org.springframework.web.servlet.view.RedirectView;
 import org.springframework.web.servlet.view.RedirectView;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpSession;
@@ -57,10 +55,10 @@ import java.util.Objects;
 public class WeChatController {
 public class WeChatController {
     @Autowired
     @Autowired
     private WxMpService wxMpService;
     private WxMpService wxMpService;
-//    @Resource
-//    private HttpServletRequest request;
-//    @Resource
-//    private HttpServletResponse response;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private HttpServletResponse response;
     @Autowired
     @Autowired
     private MceMbuserService mceMbuserService;
     private MceMbuserService mceMbuserService;
     @Autowired
     @Autowired
@@ -70,7 +68,7 @@ public class WeChatController {
      * 调用的第一个接口,获取微信公众号CODE,获取openid
      * 调用的第一个接口,获取微信公众号CODE,获取openid
      */
      */
     @GetMapping("/getFirst1")
     @GetMapping("/getFirst1")
-    public void getFirst1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, WxErrorException {
+    public void getFirst1() throws UnsupportedEncodingException {
         String http = "https://";
         String http = "https://";
         String code = request.getParameter("code");
         String code = request.getParameter("code");
         String userAgent = request.getHeader("User-Agent");
         String userAgent = request.getHeader("User-Agent");
@@ -82,176 +80,185 @@ public class WeChatController {
 //                String temp = "https://manager.usky.cn/prod-api/service-iot/weChat/getFirst1";
 //                String temp = "https://manager.usky.cn/prod-api/service-iot/weChat/getFirst1";
             String url = URLDecoder.decode(temp, "UTF-8");
             String url = URLDecoder.decode(temp, "UTF-8");
             String sendUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+constant.WE_CHAT_APP_ID+"&redirect_uri="+url+"&response_type=code&scope=snsapi_base&state=abc123#wechat_redirect";
             String sendUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+constant.WE_CHAT_APP_ID+"&redirect_uri="+url+"&response_type=code&scope=snsapi_base&state=abc123#wechat_redirect";
-            System.out.println("sendUrl: "+sendUrl);
-            request.getRequestDispatcher(sendUrl).forward(request,response);
+            try{
+                System.out.println("sendUrl: "+sendUrl);
+                response.sendRedirect(sendUrl);
+            }catch (IOException e){
+                throw new BusinessException(e.getMessage());
+            }
         }else{
         }else{
             System.out.println("code:  "+code);
             System.out.println("code:  "+code);
-            WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
-
-            String openid = wxOAuth2AccessToken.getOpenId();
-            String access_token = wxOAuth2AccessToken.getAccessToken();
-            System.out.println("openid:  "+openid);
-            request.getSession().setAttribute("openid",openid);
-            LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
-            queryWrapper.select(MceMbuser::getPhone)
-                    .eq(MceMbuser::getOpenid,openid);
-            MceMbuser one = mceMbuserService.getOne(queryWrapper);
-            if(one != null){
-                request.getSession().setAttribute("phone",one.getPhone());
+            try {
+                WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
+
+                String openid = wxOAuth2AccessToken.getOpenId();
+                String access_token = wxOAuth2AccessToken.getAccessToken();
+                System.out.println("openid:  "+openid);
+//                request.getSession().setAttribute("openid",openid);
+//                LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
+//                queryWrapper.select(MceMbuser::getPhone)
+//                        .eq(MceMbuser::getOpenid,openid);
+//                MceMbuser one = mceMbuserService.getOne(queryWrapper);
+//                if(one != null){
+//                    request.getSession().setAttribute("phone",one.getPhone());
+//                }
+
+                String sendUrl = String.format("https://manager.usky.cn/mobile/#/pages/login?openId=",openid);
+                response.sendRedirect(URLDecoder.decode(sendUrl, "UTF-8"));
+            } catch (Exception e) {
+                throw new BusinessException(e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 跳转首页权限
+     */
+    @GetMapping("/getPageAuthorization")
+    public void getPageAuthorization() throws UnsupportedEncodingException {
+        String http = "https://";
+        String code = request.getParameter("code");
+        String userAgent = request.getHeader("User-Agent");
+        if(!userAgent.contains("MicroMessenger")){
+            try{
+                response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
+            }catch (IOException e){
+                throw new BusinessException(e.getMessage());
             }
             }
 
 
-            request.getRequestDispatcher(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login?flag=true", "UTF-8")).forward(request,response);
+        }else{
+            Object obj = request.getSession().getAttribute("openid");
+            if((obj != null) && (StringUtils.isNotBlank(obj.toString()))){
+                try{
+                    LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
+                    queryWrapper.eq(MceMbuser::getOpenid,request.getSession().getAttribute("openid"));
+                    MceMbuser one = mceMbuserService.getOne(queryWrapper);
+                    if(one != null){
+                        request.getSession().setAttribute("phone",one.getPhone());
+                        String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
+                        response.sendRedirect(URLDecoder.decode(sendUrl, "UTF-8"));
+                    }else{
+                        request.getSession().removeAttribute("openid");
+                        request.getSession().removeAttribute("phone");
+
+                        response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
+                    }
+                }catch (IOException e){
+                    throw new BusinessException(e.getMessage());
+                }
+
+            }else{
+                if(StringUtils.isBlank(code)){
+                    String temp = http+constant.call_back_domain+"/prod-api/service-iot"+request.getRequestURI();
+                    String url = URLDecoder.decode(temp, "UTF-8");
+                    String sendUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+constant.WE_CHAT_APP_ID+"&redirect_uri="+url+"&response_type=code&scope=snsapi_base&state=abc123#wechat_redirect";
+                    try{
+                        System.out.println("sendUrl: "+sendUrl);
+                        response.sendRedirect(sendUrl);
+                    }catch (IOException e){
+                        throw new BusinessException(e.getMessage());
+                    }
+                }else{
+                    System.out.println("code:  "+code);
+                    try {
+                        WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
+
+                        String openid = wxOAuth2AccessToken.getOpenId();
+                        String access_token = wxOAuth2AccessToken.getAccessToken();
+                        System.out.println("openid:  "+openid);
+                        request.getSession().setAttribute("openid",openid);
+                        LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
+                        queryWrapper.eq(MceMbuser::getOpenid,openid);
+                        MceMbuser one = mceMbuserService.getOne(queryWrapper);
+                        if(one != null){
+                            request.getSession().setAttribute("phone",one.getPhone());
+
+                            String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
+                            response.sendRedirect(URLDecoder.decode(sendUrl, "UTF-8"));
+                        }else{
+                            request.getSession().removeAttribute("openid");
+                            request.getSession().removeAttribute("phone");
+
+                            response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
+                        }
+
+
+                    } catch (Exception e) {
+                        throw new BusinessException(e.getMessage());
+                    }
+                }
+
+            }
         }
         }
+
+    }
+
+
+    /**
+     * 登录并注册
+     */
+    @PostMapping("/signUp")
+    public Map<String,Object> signUp(@RequestBody SignUpRequestVO requestVO){
+        String phone = requestVO.getPhone();
+        String verify = requestVO.getVerify();
+        Map<String,Object> map = new HashMap<>();
+
+        //手机验证码登录
+        if (StringUtils.isBlank(phone)) {
+            throw new BusinessException("手机号不能为空");
+        }
+        if (StringUtils.isBlank(verify)) {
+            throw new BusinessException("验证码不能为空");
+        }
+        if (!verify.equals(redisHelper.get(phone))) {
+            throw new BusinessException("验证码错误");
+        }
+
+        LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(MceMbuser::getPhone,phone);
+        List<MceMbuser> list = mceMbuserService.list(queryWrapper);
+        if(CollectionUtils.isEmpty(list)){
+            MceMbuser one = new MceMbuser();
+            one.setPhone(phone);
+            if(request.getSession().getAttribute("type") == "app"){
+                one.setOpenid(request.getSession().getAttribute("app_token").toString());
+            }else{
+                one.setOpenid(request.getSession().getAttribute("openid").toString());
+            }
+            one.setCreateBy(SecurityUtils.getUsername());
+            one.setUserId(SecurityUtils.getUserId());
+            one.setCreateTime(LocalDateTime.now());
+
+            if(mceMbuserService.save(one)){
+
+            }else{
+                map.put("msg","注册失败,请重新注册");
+                map.put("flag",true);
+                return map;
+            }
+        }else {
+            request.getSession().setAttribute("openid",list.get(0).getOpenid());
+        }
+
+        request.getSession().setAttribute("phone",phone);
+
+        map.put("msg","验证成功,正在登录");
+        map.put("flag",true);
+        return map;
+    }
+
+
+
+
+    /**
+     * 微信消息提醒
+     * @return
+     */
+    @PostMapping("sendWeChatMessage")
+    public JSONObject sendWeChatMessage(@RequestBody SendWeChatMessageRequestVO requestVO) {
+        return mceMbuserService.sendWeChatMessage(requestVO);
+
     }
     }
-//
-//    /**
-//     * 跳转首页权限
-//     */
-//    @GetMapping("/getPageAuthorization")
-//    public void getPageAuthorization() throws UnsupportedEncodingException {
-//        String http = "https://";
-//        String code = request.getParameter("code");
-//        String userAgent = request.getHeader("User-Agent");
-//        if(!userAgent.contains("MicroMessenger")){
-//            try{
-//                response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
-//            }catch (IOException e){
-//                throw new BusinessException(e.getMessage());
-//            }
-//
-//        }else{
-//            Object obj = request.getSession().getAttribute("openid");
-//            if((obj != null) && (StringUtils.isNotBlank(obj.toString()))){
-//                try{
-//                    LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
-//                    queryWrapper.eq(MceMbuser::getOpenid,request.getSession().getAttribute("openid"));
-//                    MceMbuser one = mceMbuserService.getOne(queryWrapper);
-//                    if(one != null){
-//                        request.getSession().setAttribute("phone",one.getPhone());
-//                        String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
-//                        response.sendRedirect(URLDecoder.decode(sendUrl, "UTF-8"));
-//                    }else{
-//                        request.getSession().removeAttribute("openid");
-//                        request.getSession().removeAttribute("phone");
-//
-//                        response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
-//                    }
-//                }catch (IOException e){
-//                    throw new BusinessException(e.getMessage());
-//                }
-//
-//            }else{
-//                if(StringUtils.isBlank(code)){
-//                    String temp = http+constant.call_back_domain+"/prod-api/service-iot"+request.getRequestURI();
-//                    String url = URLDecoder.decode(temp, "UTF-8");
-//                    String sendUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+constant.WE_CHAT_APP_ID+"&redirect_uri="+url+"&response_type=code&scope=snsapi_base&state=abc123#wechat_redirect";
-//                    try{
-//                        System.out.println("sendUrl: "+sendUrl);
-//                        response.sendRedirect(sendUrl);
-//                    }catch (IOException e){
-//                        throw new BusinessException(e.getMessage());
-//                    }
-//                }else{
-//                    System.out.println("code:  "+code);
-//                    try {
-//                        WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
-//
-//                        String openid = wxOAuth2AccessToken.getOpenId();
-//                        String access_token = wxOAuth2AccessToken.getAccessToken();
-//                        System.out.println("openid:  "+openid);
-//                        request.getSession().setAttribute("openid",openid);
-//                        LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
-//                        queryWrapper.eq(MceMbuser::getOpenid,openid);
-//                        MceMbuser one = mceMbuserService.getOne(queryWrapper);
-//                        if(one != null){
-//                            request.getSession().setAttribute("phone",one.getPhone());
-//
-//                            String sendUrl = "https://manager.usky.cn/mobile/#/pages/index?op="+one.getOpenid();
-//                            response.sendRedirect(URLDecoder.decode(sendUrl, "UTF-8"));
-//                        }else{
-//                            request.getSession().removeAttribute("openid");
-//                            request.getSession().removeAttribute("phone");
-//
-//                            response.sendRedirect(URLDecoder.decode("https://manager.usky.cn/mobile/#/pages/login", "UTF-8"));
-//                        }
-//
-//
-//                    } catch (Exception e) {
-//                        throw new BusinessException(e.getMessage());
-//                    }
-//                }
-//
-//            }
-//        }
-//
-//    }
-//
-//
-//    /**
-//     * 登录并注册
-//     */
-//    @PostMapping("/signUp")
-//    public Map<String,Object> signUp(@RequestBody SignUpRequestVO requestVO){
-//        String phone = requestVO.getPhone();
-//        String verify = requestVO.getVerify();
-//        Map<String,Object> map = new HashMap<>();
-//
-//        //手机验证码登录
-//        if (StringUtils.isBlank(phone)) {
-//            throw new BusinessException("手机号不能为空");
-//        }
-//        if (StringUtils.isBlank(verify)) {
-//            throw new BusinessException("验证码不能为空");
-//        }
-//        if (!verify.equals(redisHelper.get(phone))) {
-//            throw new BusinessException("验证码错误");
-//        }
-//
-//        LambdaQueryWrapper<MceMbuser> queryWrapper = Wrappers.lambdaQuery();
-//        queryWrapper.eq(MceMbuser::getPhone,phone);
-//        List<MceMbuser> list = mceMbuserService.list(queryWrapper);
-//        if(CollectionUtils.isEmpty(list)){
-//            MceMbuser one = new MceMbuser();
-//            one.setPhone(phone);
-//            if(request.getSession().getAttribute("type") == "app"){
-//                one.setOpenid(request.getSession().getAttribute("app_token").toString());
-//            }else{
-//                one.setOpenid(request.getSession().getAttribute("openid").toString());
-//            }
-//            one.setCreateBy(SecurityUtils.getUsername());
-//            one.setUserId(SecurityUtils.getUserId());
-//            one.setCreateTime(LocalDateTime.now());
-//
-//            if(mceMbuserService.save(one)){
-//
-//            }else{
-//                map.put("msg","注册失败,请重新注册");
-//                map.put("flag",true);
-//                return map;
-//            }
-//        }else {
-//            request.getSession().setAttribute("openid",list.get(0).getOpenid());
-//        }
-//
-//        request.getSession().setAttribute("phone",phone);
-//
-//        map.put("msg","验证成功,正在登录");
-//        map.put("flag",true);
-//        return map;
-//    }
-//
-//
-//
-//
-//    /**
-//     * 微信消息提醒
-//     * @return
-//     */
-//    @PostMapping("sendWeChatMessage")
-//    public JSONObject sendWeChatMessage(@RequestBody SendWeChatMessageRequestVO requestVO) {
-//        return mceMbuserService.sendWeChatMessage(requestVO);
-//
-//    }
 
 
 }
 }