Przeglądaj źródła

[微信第三方登录][修改]:多绑定用户登录

release_toaliyun_real
Stormeye Wu 7 lat temu
rodzic
commit
d3c0a67f9d
7 zmienionych plików z 136 dodań i 21 usunięć
  1. +15
    -13
      mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java
  2. +2
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java
  3. +49
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java
  4. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java
  5. +17
    -2
      mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java
  6. +12
    -2
      mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java
  7. +37
    -4
      mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml

+ 15
- 13
mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java Wyświetl plik

@@ -112,7 +112,6 @@ public class HomeController extends BaseController {
} else { } else {
info.setWithWechat(false); info.setWithWechat(false);
} }
// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId());
String menus = mallUserRoleService.getPermissionsByUser(info); String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
@@ -169,20 +168,16 @@ public class HomeController extends BaseController {
Subject subject = SecurityUtils.getSubject(); Subject subject = SecurityUtils.getSubject();
UseriFormallToken token = new UseriFormallToken(user.getUsername()); UseriFormallToken token = new UseriFormallToken(user.getUsername());
subject.login(token); subject.login(token);
// List<MallRole> roleList = sysRoleService.findRoleByUserId(user.getId());
// if (null != roleList && roleList.size() > 0) {
// List<MallPermission> permissionList = sysPermissionService
// .findPermissionByRoleIds(roleList.stream().map(MallRole::getId).collect(Collectors.toList()));
// user.setRole(roleList);
// user.setPermission(permissionList);
// }
MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo);
info.setPassword("保密"); info.setPassword("保密");
if(StringUtils.isNotBlank(info.getBopenId())) if(StringUtils.isNotBlank(info.getBopenId()))
info.setBopenId("保密"); info.setBopenId("保密");
if(StringUtils.isNotBlank(info.getWebOpenId()))
if(StringUtils.isNotBlank(info.getWebOpenId())) {
info.setWebOpenId("保密"); info.setWebOpenId("保密");
// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId());
info.setWithWechat(true);
} else {
info.setWithWechat(false);
}
String menus = mallUserRoleService.getPermissionsByUser(info); String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
@@ -247,9 +242,12 @@ public class HomeController extends BaseController {
info.setPassword("保密"); info.setPassword("保密");
if(StringUtils.isNotBlank(info.getBopenId())) if(StringUtils.isNotBlank(info.getBopenId()))
info.setBopenId("保密"); info.setBopenId("保密");
if(StringUtils.isNotBlank(info.getWebOpenId()))
if(StringUtils.isNotBlank(info.getWebOpenId())) {
info.setWebOpenId("保密"); info.setWebOpenId("保密");
// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId());
info.setWithWechat(true);
} else {
info.setWithWechat(false);
}
String menus = mallUserRoleService.getPermissionsByUser(info); String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
@@ -306,8 +304,12 @@ public class HomeController extends BaseController {
info.setPassword("保密"); info.setPassword("保密");
if(StringUtils.isNotBlank(info.getBopenId())) if(StringUtils.isNotBlank(info.getBopenId()))
info.setBopenId("保密"); info.setBopenId("保密");
if(StringUtils.isNotBlank(info.getWebOpenId()))
if(StringUtils.isNotBlank(info.getWebOpenId())) {
info.setWebOpenId("保密"); info.setWebOpenId("保密");
info.setWithWechat(true);
} else {
info.setWithWechat(false);
}
String menus = mallUserRoleService.getPermissionsByUser(info); String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);


+ 2
- 0
mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java Wyświetl plik

@@ -5,6 +5,7 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.vo.MallUserInfoVo;
import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumMallUserStatus;
import com.iformall.enums.EnumUserAdmin; import com.iformall.enums.EnumUserAdmin;
import com.iformall.enums.EnumFlowPermissionType; import com.iformall.enums.EnumFlowPermissionType;
@@ -392,4 +393,5 @@ public class MallUserInfoController extends BaseController {
resultMap.put("billUserList",billUserList); resultMap.put("billUserList",billUserList);
return new ResultData(resultMap); return new ResultData(resultMap);
} }

} }

+ 49
- 0
mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java Wyświetl plik

@@ -1,10 +1,14 @@
package com.iformall.controller; package com.iformall.controller;


import com.iformall.common.ResultData;
import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.vo.MallUserInfoVo;
import com.iformall.service.MallUserInfoService; import com.iformall.service.MallUserInfoService;
import com.iformall.service.MallUserRoleService; import com.iformall.service.MallUserRoleService;
import com.iformall.shiro.UserSession; import com.iformall.shiro.UserSession;
import com.iformall.shiro.UseriFormallToken; import com.iformall.shiro.UseriFormallToken;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
@@ -73,6 +77,7 @@ public class WechatLoginController extends BaseController {
info.setPassword("保密"); info.setPassword("保密");
info.setBopenId("保密"); info.setBopenId("保密");
info.setWebOpenId("保密"); info.setWebOpenId("保密");
info.setWithWechat(true);
String menus = mallUserRoleService.getPermissionsByUser(info); String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
@@ -107,6 +112,50 @@ public class WechatLoginController extends BaseController {
} }
} }


@ApiOperation(value = "微信登录用户信息列表")
@GetMapping("getMallUserList")
@ApiImplicitParams({
@ApiImplicitParam(name = "openId", value = "openId", dataType = "String", paramType = "query", required = true)})
public ResultData getMallUserList(String openId) {
log.debug("[" + getIpAddr() + "] MallUserInfoController::getMallUserList");
List<MallUserInfoVo> users = mallUserInfoService.getUsersByWebOpenId(openId);
// TODO 添加 加密串

return new ResultData(users);
}

@ApiOperation(value = "微信用户登录")
@GetMapping("weChatUserLogin")
@ApiImplicitParams({
@ApiImplicitParam(name = "openId", value = "openId", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "uname", value = "uname", dataType = "String", paramType = "query", required = true)})
public void weChatUserLogin(String uname, String openId, HttpServletRequest request, HttpServletResponse response) {
log.debug("[" + getIpAddr() + "] MallUserInfoController::weChatUserLogin");
String host = request.getHeader("host");
MallUserInfo userInfo = mallUserInfoService.getByUsernameWebOpenId(uname, openId);
try {
Subject subject = SecurityUtils.getSubject();
UseriFormallToken token = new UseriFormallToken(userInfo.getUsername());
subject.login(token);
MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo);
info.setPassword("保密");
info.setBopenId("保密");
info.setWebOpenId("保密");
info.setWithWechat(true);
String menus = mallUserRoleService.getPermissionsByUser(info);
if(menus != null) {
info.setMenus(menus);
}
Cookie unameCookie = new Cookie("uname", info.getUsername());
unameCookie.setMaxAge(60);
response.addCookie(unameCookie);
log.debug("https://" + host + "/#/");
response.sendRedirect("https://" + host + "/#/layout");
} catch (Exception e) {
log.error(e.getMessage());
}
}

@ApiOperation(value = "微信第三方登录绑定", notes = "请配置此callback到网页redirect_uri") @ApiOperation(value = "微信第三方登录绑定", notes = "请配置此callback到网页redirect_uri")
@GetMapping("bindWebOpenId") @GetMapping("bindWebOpenId")
public void userBindWebOpenId(String code, String state, HttpServletRequest request, HttpServletResponse response) { public void userBindWebOpenId(String code, String state, HttpServletRequest request, HttpServletResponse response) {


+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java Wyświetl plik

@@ -14,6 +14,8 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> {


MallUserInfo selectByUserName(@Param("username") String username); MallUserInfo selectByUserName(@Param("username") String username);


MallUserInfo selectByUserNameWebOpen(@Param("username") String username, @Param("webOpenId") String webOpenId);

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


List<MallUserInfo> selectByWebOpenId(@Param("webOpenId") String webOpenId); List<MallUserInfo> selectByWebOpenId(@Param("webOpenId") String webOpenId);
@@ -27,4 +29,6 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> {


List<MallUserInfoVo> selectUsersByPhone(@Param("phone") String phone); List<MallUserInfoVo> selectUsersByPhone(@Param("phone") String phone);


List<MallUserInfoVo> selectUsersByWebOpenId(@Param("webOpenId") String webOpenId);

} }

+ 17
- 2
mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java Wyświetl plik

@@ -113,10 +113,25 @@ public interface MallUserInfoService {
/** /**
* 根据web端OpenId获得实体 * 根据web端OpenId获得实体
* *
* @param openId
* @param webOpenId
* @return
*/
List<MallUserInfo> getByWebOpenId(String webOpenId);

/**
* 根据phone获得展示列表
*
* @param webOpenId
* @return
*/
List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId);

/**
* 根据用户名webOpenId查询用户对象
* @param username
* @return * @return
*/ */
List<MallUserInfo> getByWebOpenId(String openId);
MallUserInfo getByUsernameWebOpenId(String username, String webOpenId);


void updateWebOpenId(MallUserInfo user); void updateWebOpenId(MallUserInfo user);




+ 12
- 2
mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java Wyświetl plik

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


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

@Override
public List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId) {
return mallUserInfoMapper.selectUsersByWebOpenId(webOpenId);
}

@Override
public MallUserInfo getByUsernameWebOpenId(String username, String webOpenId) {
return mallUserInfoMapper.selectByUserNameWebOpen(username, webOpenId);
} }


@Override @Override


+ 37
- 4
mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml Wyświetl plik

@@ -21,6 +21,10 @@
<result column="flow_permission" property="flowPermission"/> <result column="flow_permission" property="flowPermission"/>
</resultMap> </resultMap>


<sql id="allSafeColumns">
`id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`flow_permission`
</sql>

<sql id="allColumns"> <sql id="allColumns">
<<<<<<< HEAD <<<<<<< HEAD
`id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`flow_permission` `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`flow_permission`
@@ -94,7 +98,7 @@


<select id="findList" parameterType="com.iformall.domain.po.MallUserInfo" resultMap="BaseResultMap"> <select id="findList" parameterType="com.iformall.domain.po.MallUserInfo" resultMap="BaseResultMap">
select select
<include refid="allColumns"/>
<include refid="allSafeColumns"/>
from mall_user_info from mall_user_info
<include refid="dynamicWhereConditions"/> <include refid="dynamicWhereConditions"/>
</select> </select>
@@ -109,11 +113,24 @@
</if> </if>
</select> </select>


<select id="selectByBOpenId" resultMap="BaseResultMap">
<select id="selectByUserNameWebOpen" resultMap="BaseResultMap">
select select
<include refid="allColumns"/> <include refid="allColumns"/>
from mall_user_info from mall_user_info
where 1=1 where 1=1
<if test=" null != username ">
and username=#{username}
</if>
<if test=" null != webOpenId ">
and `web_open_id`=#{webOpenId}
</if>
</select>

<select id="selectByBOpenId" resultMap="BaseResultMap">
select
<include refid="allSafeColumns"/>
from mall_user_info
where 1=1
<if test=" null != tenantId "> <if test=" null != tenantId ">
and `tenant_id`=#{tenantId} and `tenant_id`=#{tenantId}
</if> </if>
@@ -191,15 +208,20 @@
<result column="img_url_h" jdbcType="VARCHAR" property="imgUrlH"/> <result column="img_url_h" jdbcType="VARCHAR" property="imgUrlH"/>
</resultMap> </resultMap>


<sql id="allSafeVColumns">
u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`flow_permission`,
m.`name` as mall_name, m.`group` as mall_group, m.`img_url`, m.`img_url_h`
</sql>

<sql id="allVColumns"> <sql id="allVColumns">
u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`bopen_id`,u.`web_open_id`,u.`flow_permission`,
u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`flow_permission`,
m.`name` as mall_name, m.`group` as mall_group, m.`img_url`, m.`img_url_h` m.`name` as mall_name, m.`group` as mall_group, m.`img_url`, m.`img_url_h`
</sql> </sql>




<select id="selectUsersByPhone" resultMap="VBaseResultMap"> <select id="selectUsersByPhone" resultMap="VBaseResultMap">
select select
<include refid="allVColumns"/>
<include refid="allSafeVColumns"/>
from mall_user_info u from mall_user_info u
left join wx_mall m where m.`tenant_id` = u.`tenant_id` left join wx_mall m where m.`tenant_id` = u.`tenant_id`
where 1=1 where 1=1
@@ -208,4 +230,15 @@
</if> </if>
</select> </select>


<select id="selectUsersByWebOpenId" resultMap="VBaseResultMap">
select
<include refid="allSafeVColumns"/>
from mall_user_info u
left join wx_mall m where m.`tenant_id` = u.`tenant_id`
where 1=1
<if test=" null != webOpenId ">
and u.`web_open_id` = #{webOpenId}
</if>
</select>

</mapper> </mapper>

Ładowanie…
Anuluj
Zapisz