Просмотр исходного кода

[微信第三方登录][新增]:登录修改

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
f65a554076
4 измененных файлов: 36 добавлений и 27 удалений
  1. +32
    -23
      mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java
  4. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java

+ 32
- 23
mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java Просмотреть файл

@@ -18,8 +18,10 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@@ -39,10 +41,13 @@ public class WechatLoginController extends BaseController {
@ApiOperation(value = "微信网页登录回调", notes = "请配置此callback到网页redirect_uri")
@GetMapping("callback")
@ResponseBody
public ResultData getAccessToken(String code, HttpServletResponse response) {
public ResultData getAccessToken(String code, HttpServletRequest request, HttpServletResponse response) {
log.debug("[" + getIpAddr() + "] WechatLoginController::getAccessToken");
log.debug("code: " + code);
ResultData r = new ResultData();
try {
WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
log.debug("accessToken: " + accessToken.getAccessToken() + ", openId: " + accessToken.getOpenId() + ", unionId: " + accessToken.getUnionId());
// 保存 access_token 到 cookie,两小时过期
Cookie accessTokencookie = new Cookie("accessToken", accessToken.getAccessToken());
accessTokencookie.setMaxAge(60 *2);
@@ -53,37 +58,41 @@ public class WechatLoginController extends BaseController {
response.addCookie(openIdCookie);

// check user openid 是否是已授权用户
MallUserInfo user = mallUserInfoService.getByWebOpenId(accessToken.getOpenId());
if(user != null) {
try {
Subject subject = SecurityUtils.getSubject();
UseriFormallToken token = new UseriFormallToken(user.getUsername());
subject.login(token);
MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo);
info.setPassword("保密");
info.setBopenId("保密");
info.setWebOpenId("保密");
String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) {
info.setMenus(menus);
List<MallUserInfo> userList = mallUserInfoService.getByWebOpenId(accessToken.getOpenId());
if(userList.size() > 0) {
if(userList.size() == 1) {
// 唯一用户
MallUserInfo user = userList.get(0);
try {
Subject subject = SecurityUtils.getSubject();
UseriFormallToken token = new UseriFormallToken(user.getUsername());
subject.login(token);
MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo);
info.setPassword("保密");
info.setBopenId("保密");
info.setWebOpenId("保密");
String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) {
info.setMenus(menus);
}
r.data = info;
} catch (Exception e) {
return new ResultData(ResultData.ERROR, "用户名或者密码错误");
}
r.data = info;
} catch (Exception e) {
return new ResultData(ResultData.ERROR, "用户名或者密码错误");
} else {
// 跳转选择界面
//response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/app/home?open_id=" + openId);
}

} else {
Map<String, String> map = new HashMap<String, String>();
map.put("accessToken", accessToken.getAccessToken());
map.put("openId", accessToken.getOpenId());
//map.put("unionId", accessToken.getUnionId());
r.data = map;
// 跳转登录页面
//response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/bind?type="+Constants.LOGIN_TYPE_WECHAT);
}
// if (user == null) {
// response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/bind?type="+Constants.LOGIN_TYPE_WECHAT);
// } else {
// //如果用户已存在,则直接登录
// response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/app/home?open_id=" + openId);
// }
return r;
} catch (WxErrorException e) {
log.error(e.getMessage());


+ 1
- 1
mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java Просмотреть файл

@@ -15,7 +15,7 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> {

MallUserInfo selectByBOpenId(@Param("bopenId") String bopenId, @Param("tenantId") String tenantId);

MallUserInfo selectByWebOpenId(@Param("webOpenId") String webOpenId);
List<MallUserInfo> selectByWebOpenId(@Param("webOpenId") String webOpenId);

MallUserInfo selectByPhone(@Param("phone") String phone, @Param("tenantId") String tenantId);


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java Просмотреть файл

@@ -103,7 +103,7 @@ public interface MallUserInfoService {
* @param openId
* @return
*/
MallUserInfo getByWebOpenId(String openId);
List<MallUserInfo> getByWebOpenId(String openId);

/**
* 根据条件用户列表


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java Просмотреть файл

@@ -68,8 +68,8 @@ public class MallUserInfoServiceImpl implements MallUserInfoService {
}

@Override
public MallUserInfo getByWebOpenId(String openId) {
return null;
public List<MallUserInfo> getByWebOpenId(String openId) {
return mallUserInfoMapper.selectByWebOpenId(openId);
}

@Override


Загрузка…
Отмена
Сохранить