Browse Source

修改登录保存unionId 添加根据UnionId获取公众号OpenId的方法

master
ccsens_zhengzhichuan 4 weeks ago
parent
commit
2530407d68
  1. 10
      research-common/src/main/java/com/research/common/core/domain/entity/SysUser.java
  2. 23
      research-common/src/main/java/com/research/common/core/domain/model/LoginUser.java
  3. 18
      research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java
  4. 4
      research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java
  5. 2
      research-framework/src/main/java/com/research/framework/web/service/WebTmsLoginService.java
  6. 9
      research-system/src/main/java/com/research/system/mapper/SysUserMapper.java
  7. 9
      research-system/src/main/java/com/research/system/service/ISysUserService.java
  8. 9
      research-system/src/main/java/com/research/system/service/impl/SysUserServiceImpl.java
  9. 17
      research-system/src/main/resources/mapper/system/SysUserMapper.xml

10
research-common/src/main/java/com/research/common/core/domain/entity/SysUser.java

@ -81,6 +81,8 @@ public class SysUser extends BaseEntity
private String openId;
private String unionId;
/** 角色对象 */
private List<SysRole> roles;
@ -318,6 +320,14 @@ public class SysUser extends BaseEntity
this.openId = openId;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

23
research-common/src/main/java/com/research/common/core/domain/model/LoginUser.java

@ -2,6 +2,7 @@ package com.research.common.core.domain.model;
import com.alibaba.fastjson2.annotation.JSONField;
import com.research.common.core.domain.entity.SysUser;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
@ -73,12 +74,24 @@ public class LoginUser implements UserDetails
private Long tenantId;
@ApiModelProperty("微信的openid")
private String openId;
@ApiModelProperty("微信的unionid")
private String unionid;
public LoginUser()
{
}
public String getUnionid() {
return unionid;
}
public void setUnionid(String unionid) {
this.unionid = unionid;
}
public Long getTenantId() {
return tenantId;
}
@ -93,6 +106,13 @@ public class LoginUser implements UserDetails
this.tenantId = tenantId;
}
public LoginUser(String openId, String unionid, Long tenantId)
{
this.openId = openId;
this.tenantId = tenantId;
this.unionid = unionid;
}
public LoginUser(SysUser user, Set<String> permissions)
{
this.user = user;
@ -116,7 +136,7 @@ public class LoginUser implements UserDetails
this.tenantId = tenantId;
}
public LoginUser(String openId, Long userId, Long deptId, SysUser user, Set<String> permissions,Long tenantId)
public LoginUser(String openId, String unionid, Long userId, Long deptId, SysUser user, Set<String> permissions,Long tenantId)
{
this.openId = openId;
this.userId = userId;
@ -124,6 +144,7 @@ public class LoginUser implements UserDetails
this.user = user;
this.permissions = permissions;
this.tenantId = tenantId;
this.unionid = unionid;
}
public LoginUser(Long userId, Long deptId, SysUser user, Set<String> permissions, Long tenantId, Long scoreId)

18
research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java

@ -122,7 +122,7 @@ public class SysLoginService
MiniProgramUser wxmpUser = externalService.sendWxmpLoginRequest(wxCode);
if (StringUtils.isNotNull(wxmpUser)) {
//处理openId
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId());
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId(), wxmpUser.getUnionid());
}
} catch (Exception e) {
throw new ServiceException("绑定openId失败");
@ -261,6 +261,22 @@ public class SysLoginService
userService.updateUserProfile(sysUser);
}
/**
* 记录登录信息
*
* @param userId 用户ID
*/
public void recordLoginInfo(Long userId, String openId, String unionId)
{
SysUser sysUser = new SysUser();
sysUser.setUserId(userId);
sysUser.setLoginIp(IpUtils.getIpAddr());
sysUser.setLoginDate(DateUtils.getNowDate());
sysUser.setOpenId(openId);
sysUser.setUnionId(unionId);
userService.updateUserProfile(sysUser);
}
public WxUser.LoginResult loginByWxmp(String code) {
// 用户验证
Authentication authentication;

4
research-framework/src/main/java/com/research/framework/web/service/UserDetailsServiceImpl.java

@ -201,9 +201,9 @@ public class UserDetailsServiceImpl implements UserDetailsService
}
if (StringUtils.isNull(user)) {
return new LoginUser(wxmpUser.getOpenid(),tenantId);
return new LoginUser(wxmpUser.getOpenid(), wxmpUser.getUnionid(), tenantId);
}else {
return new LoginUser(wxmpUser.getOpenid(),user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user),tenantId);
return new LoginUser(wxmpUser.getOpenid(), wxmpUser.getUnionid(), user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user),tenantId);
}
}

2
research-framework/src/main/java/com/research/framework/web/service/WebTmsLoginService.java

@ -334,7 +334,7 @@ public class WebTmsLoginService
MiniProgramUser wxmpUser = externalService.sendWxmpLoginRequest(wxCode);
if (StringUtils.isNotNull(wxmpUser)) {
//处理openId
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId());
userService.disposeUserByOpenId(wxmpUser.getOpenid(),loginUser.getUserId(), wxmpUser.getUnionid());
}
} catch (Exception e) {
throw new ServiceException("绑定openId失败");

9
research-system/src/main/java/com/research/system/mapper/SysUserMapper.java

@ -133,7 +133,14 @@ public interface SysUserMapper
void deleteOpenId(String openId);
void relevanceUserAndOpenId(@Param("openId") String openId, @Param("userId")Long userId);
void relevanceUserAndOpenId(@Param("openId") String openId, @Param("userId")Long userId, @Param("unionId") String unionId);
void delUserOpenId(Long userId);
/**
* 通过UnionId获取公众号OpenId
* @param unionId
* @return
*/
String getGzhOpenIdByUnionId(String unionId);
}

9
research-system/src/main/java/com/research/system/service/ISysUserService.java

@ -211,7 +211,14 @@ public interface ISysUserService
SysUser getUserByOpenId(String openId);
void disposeUserByOpenId(String openId, Long userId);
void disposeUserByOpenId(String openId, Long userId, String unionId);
UserVo.MyselfVo getMyself();
/**
* 通过UnionId获取公众号OpenId
* @param unionId
* @return
*/
String getGzhOpenIdByUnionId(String unionId);
}

9
research-system/src/main/java/com/research/system/service/impl/SysUserServiceImpl.java

@ -572,11 +572,11 @@ public class SysUserServiceImpl implements ISysUserService
}
@Override
public void disposeUserByOpenId(String openId, Long userId) {
public void disposeUserByOpenId(String openId, Long userId, String unionId) {
//删除openId和用户的关联
userMapper.deleteOpenId(openId);
//关联当前用户
userMapper.relevanceUserAndOpenId(openId, userId);
userMapper.relevanceUserAndOpenId(openId, userId, unionId);
}
@Override
@ -594,4 +594,9 @@ public class SysUserServiceImpl implements ISysUserService
return myselfVo;
}
@Override
public String getGzhOpenIdByUnionId(String unionId) {
return userMapper.getGzhOpenIdByUnionId(unionId);
}
}

17
research-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deptId" column="dept_id" />
<result property="orgId" column="org_id" />
<result property="openId" column="open_id" />
<result property="unionId" column="union_id" />
<result property="userName" column="user_name" />
<result property="nickName" column="nick_name" />
<result property="email" column="email" />
@ -50,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status,
u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.org_id, u.open_id,
u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.org_id, u.open_id, u.union_id,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@ -61,7 +62,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag,
u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.org_id, u.open_id, d.dept_name, d.leader
u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.org_id, u.open_id, d.dept_name, d.leader,
u.union_id
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
@ -172,6 +174,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="unionId != null and unionId != ''">union_id,</if>
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
@ -188,6 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="unionId != null and unionId != ''">#{unionId},</if>
sysdate()
)
</insert>
@ -209,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="loginDate != null">login_date = #{loginDate},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="unionId != null and unionId != ''">union_id = #{unionId},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
@ -240,10 +245,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update sys_user set open_id = null where user_id = #{userId}
</update>
<update id="deleteOpenId">
update sys_user set open_id = null where open_id = #{openId}
update sys_user set open_id = null, union_id = null where open_id = #{openId}
</update>
<update id="relevanceUserAndOpenId">
update sys_user set open_id = #{openId} where user_id = #{userId}
update sys_user set open_id = #{openId}, union_id = #{unionId} where user_id = #{userId}
</update>
<select id="getGzhOpenIdByUnionId" resultType="java.lang.String">
select open_id from srsp_new.ums_gzh_info where union_id = #{unionId} and del_status = '0'
</select>
</mapper>
Loading…
Cancel
Save