|
@@ -23,7 +23,6 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import ma.glasnost.orika.impl.util.StringUtil;
|
|
|
import me.chanjar.weixin.common.api.WxConsts;
|
|
|
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.enums.WxMpApiUrl;
|
|
|
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 javax.annotation.Resource;
|
|
|
-import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.servlet.http.HttpSession;
|
|
@@ -57,10 +55,10 @@ import java.util.Objects;
|
|
|
public class WeChatController {
|
|
|
@Autowired
|
|
|
private WxMpService wxMpService;
|
|
|
-// @Resource
|
|
|
-// private HttpServletRequest request;
|
|
|
-// @Resource
|
|
|
-// private HttpServletResponse response;
|
|
|
+ @Resource
|
|
|
+ private HttpServletRequest request;
|
|
|
+ @Resource
|
|
|
+ private HttpServletResponse response;
|
|
|
@Autowired
|
|
|
private MceMbuserService mceMbuserService;
|
|
|
@Autowired
|
|
@@ -70,7 +68,7 @@ public class WeChatController {
|
|
|
* 调用的第一个接口,获取微信公众号CODE,获取openid
|
|
|
*/
|
|
|
@GetMapping("/getFirst1")
|
|
|
- public void getFirst1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, WxErrorException {
|
|
|
+ public void getFirst1() throws UnsupportedEncodingException {
|
|
|
String http = "https://";
|
|
|
String code = request.getParameter("code");
|
|
|
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 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";
|
|
|
- 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{
|
|
|
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);
|
|
|
-//
|
|
|
-// }
|
|
|
|
|
|
}
|
|
|
|