WxApiInterceptor.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.caimei.config;
  2. import com.caimei.components.RedisService;
  3. import com.caimei.mapper.cmMapper.ClubMapper;
  4. import com.caimei.mapper.cmMapper.LoginMapper;
  5. import com.caimei.model.vo.WxClubUserVo;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.web.servlet.HandlerInterceptor;
  10. import javax.annotation.Resource;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. /**
  14. * Description
  15. *
  16. * @author : Aslee
  17. * @date : 2021/7/21
  18. */
  19. @Component
  20. public class WxApiInterceptor implements HandlerInterceptor {
  21. private RedisService redisService;
  22. @Autowired
  23. public void setRedisService(RedisService redisService) {
  24. this.redisService = redisService;
  25. }
  26. @Resource
  27. private LoginMapper loginMapper;
  28. @Resource
  29. private ClubMapper clubMapper;
  30. @Value("${caimei.zplmapi}")
  31. private String zplmapi;
  32. @Override
  33. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  34. String token = request.getHeader("X-Token");
  35. String cacheValue = null != token ? (null != redisService.get(token) ? String.valueOf(redisService.get(token)) : null) : null;
  36. // 验证机构用户是否可以登录
  37. WxClubUserVo clubUser = null;
  38. if (null != cacheValue && cacheValue.contains(",")) {
  39. // 订阅号登录用户
  40. String[] cacheArr = cacheValue.split(",");
  41. String mobile = cacheArr[0];
  42. Integer authUserId = Integer.parseInt(cacheArr[1]);
  43. clubUser = clubMapper.getWxClubUser(mobile, null, authUserId, null, null);
  44. } else if (null != cacheValue && cacheValue.contains("|")){
  45. // 服务号登录用户
  46. String[] cacheArr = cacheValue.split("\\|");
  47. String openId = cacheArr[0];
  48. String appId = cacheArr[1];
  49. clubUser = loginMapper.getClubUserByOpenId(openId, appId);
  50. }
  51. if (null == cacheValue || null == clubUser) {
  52. // Token失效
  53. response.sendRedirect(zplmapi + "/unauthorized");
  54. return false;
  55. }
  56. return true;
  57. }
  58. }