| | |
| | | package com.dy.pmsWechat.login; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dy.pmsGlobal.daoMp.MpOpenIdMapper; |
| | | import com.dy.pmsGlobal.pojoMp.MpOpenId; |
| | | import com.dy.pmsWechat.util.JwtUtil; |
| | | import com.dy.pmsWechat.util.RestTemplateUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | @Value("${wechat.loginUrl}") |
| | | private String loginUrl; |
| | | |
| | | @Value("${wechat.jwt.secret-key}") |
| | | private String secretKey; |
| | | |
| | | @Value("${wechat.jwt.ttl}") |
| | | private long ttlMillis; |
| | | |
| | | private final RestTemplateUtil restTemplateUtil; |
| | | private MpOpenIdMapper mpOpenIdDao; |
| | | |
| | | public WeChatService(RestTemplateUtil restTemplateUtil) { |
| | | this.restTemplateUtil = restTemplateUtil; |
| | | } |
| | | |
| | | @Autowired |
| | | private void setMpOpenIdDao(MpOpenIdMapper mpOpenIdDao) { |
| | | this.mpOpenIdDao = mpOpenIdDao; |
| | | } |
| | | |
| | | public JSONObject login(String code) throws IOException { |
| | |
| | | queryParams.put("js_code", code); |
| | | queryParams.put("grant_type", "authorization_code"); |
| | | Map<String, String> headerParams = new HashMap<>(); |
| | | return restTemplateUtil.get(loginUrl, queryParams, headerParams); |
| | | |
| | | JSONObject wxMpUser = restTemplateUtil.get(loginUrl, queryParams, headerParams); |
| | | String openId = wxMpUser.get("openid").toString(); |
| | | //获取微信信息添加到数据库 //先根据openid查询用户信息 |
| | | MpOpenId userInfo = mpOpenIdDao.getInfoByOpenId(openId); |
| | | if(userInfo == null){ //数据库没有时添加到数据库中 |
| | | userInfo = new MpOpenId(); |
| | | userInfo.setOpenId(openId); |
| | | userInfo.setCreateTime(new Date()); |
| | | mpOpenIdDao.insert(userInfo); |
| | | } |
| | | //授权完成之后,跳转到具体的功能页面 |
| | | //生成token,按照一定规则生成字符串,可以包含用户信息 |
| | | //登陆controller中生成,返回给客户端 |
| | | Map<String, Object> claims = new HashMap<>(); |
| | | claims.put("openId",openId); |
| | | String token = JwtUtil.createJwt(secretKey,ttlMillis,claims); |
| | | return new JSONObject().fluentPut("token",token); |
| | | } |
| | | } |