Browse Source

静默登录接口

master
wangpengfei 2 years ago
parent
commit
49886f5e51
  1. 105
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java
  2. 11
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java
  3. 17
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java
  4. 13
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java
  5. 12
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java
  6. 14
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml
  7. 12
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java
  8. 24
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java

105
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java

@ -32,6 +32,7 @@ import com.yxt.supervise.system.sysuser.wx.*;
import com.yxt.supervise.system.sysuserrole.SysUserRole;
import com.yxt.supervise.system.sysuserrole.SysUserRoleService;
import com.yxt.supervise.system.sysuserwxauth.SysUserWxAuth;
import com.yxt.supervise.system.sysuserwxauth.SysUserWxAuthService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@ -92,6 +93,8 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
private SysStaffOrgService sysStaffOrgService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private SysUserWxAuthService sysUserWxAuthService;
@Autowired
private SysOrganizationService sysOrganizationService;
@ -1209,7 +1212,79 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
return rb.success().setData(sysUser);
}
/**
* 微信静默登录
* @param wxCode 临时凭证code值
* @return ResultBean data:Token
* 登陆成功后data返回用户Sid
* 聂金毅 2022/6/8 2030 创建
*/
public ResultBean<SysUserLoginVo> vSilentLogin(String wxCode){
ResultBean rb = ResultBean.fireFail();
// 通过wxCode获取unionid,失败返回微信的错误提示。
// ResultBean<JSONObject> rbJsonObject = getCode2Session(wxCode,APP_ID,SECRET);
ResultBean<JSONObject> rbJsonObject = wxLogin(wxCode,APP_ID,SECRET);
if (!rbJsonObject.getSuccess()){
JSONObject jsonObject = rbJsonObject.getData();
String errcode = jsonObject.get("errcode").toString();
String errmsg = jsonObject.get("errmsg").toString();
return rb.setMsg(errmsg).setCode(errcode);
}
// 判断存在不存在unionid,用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明。、
JSONObject jsonObject = rbJsonObject.getData();
if (!jsonObject.containsKey("unionid")){
return rb.setMsg("未获得unionid,请参见auth.code2Session");
}
String unionid = jsonObject.get("unionid").toString();
String openid = jsonObject.get("openid").toString();
// 判断用户登陆授权表是否存在该用户unionid和openid,如果不存在就增加一条返回
List<SysUserWxAuth> sysUserWxAuths = sysUserWxAuthService.fetchByUnionid(unionid);
if(sysUserWxAuths.size()==0){
return rb.setMsg("此微信没有绑定用户信息,请先去绑定用户");
}
SysUserWxAuth sysUserWxAuth = sysUserWxAuthService.fetchByUnionidAndOpenid(unionid,openid);
if (sysUserWxAuth == null) {
// 添加一个新用户授权记录
SysUserWxAuth sysUserWxAuth1=new SysUserWxAuth();
sysUserWxAuth1.setUnionid(unionid);
sysUserWxAuth1.setOpenid(openid);
sysUserWxAuth1.setSysUserSid(sysUserWxAuths.get(0).getSysUserSid());
boolean isSave = sysUserWxAuthService.save(sysUserWxAuth1);
if ( !isSave ){
return rb.setMsg("登陆:新增用户授权表失败");
}
//return rb.setMsg(SysUserWxAuth_Not_Exist.getMsg()).setCode(SysUserWxAuth_Not_Exist.getCode());
}
// 如果用户Sid为空返回
String sysUserSid = sysUserWxAuth.getSysUserSid();
// if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(sysUserSid) || sysUserSid == null){
// return rb.setMsg(SysUser_Sid_IsEmpty.getMsg()).setCode(SysUser_Sid_IsEmpty.getCode());
// }
// 如果未找到用户记录返回
SysUser sysUser = fetchBySid(sysUserSid);
// if (sysUser == null){
// return rb.setMsg(SysUser_Not_Exist.getMsg()).setCode(SysUser_Not_Exist.getCode());
// }
// 如果未绑定手机号返回
// String mobile = sysUser.getMobile();
// if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(mobile) || mobile == null){
// return rb.setMsg(SysUser_Mobile_Not_Bind.getMsg()).setCode(SysUser_Mobile_Not_Bind.getCode());
// }
// // 如果设置为未登陆返回
// int isLogin = sysUser.getIsLogin();
// if (isLogin !=1){
// return rb.setMsg(SysUser_Not_Login.getMsg()).setCode(SysUser_Not_Login.getCode());
// }
// 获得Token
SysUserVo sysUserVo=setUserRedisSessionToken(sysUser);
// 重置Token失效时间
// {写代码}
SysUserLoginVo sysUserLoginVo = new SysUserLoginVo();
sysUserLoginVo.setSysUserSid(sysUserSid);
sysUserLoginVo.setToken(sysUserVo.getToken());
sysUserLoginVo.setIsLogin(true);
return rb.success().setData(sysUserLoginVo);
}
/**
* 微信静默登录
* @param wxCode 临时凭证code值
@ -1335,4 +1410,32 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
return rb.setMsg("您的平台应用未被授权,请联系工作人员。");
}
}
public ResultBean BindMobile(SysUserWxBindMobileDto sysUserWxBindMobileDto) {
ResultBean rb = ResultBean.fireFail();
String mobile = sysUserWxBindMobileDto.getMobile();
// 校验手机验证码
String code = sysUserWxBindMobileDto.getCode();
Map<String, Object> vali = mobileValidateWxRegister(mobile,code);
if(!vali.get("code").equals("200")){
return rb.setMsg(vali.get("details").toString());
}
SysUser sysUser = baseMapper.selectOne(new QueryWrapper<SysUser>().eq("mobile",mobile));
String sysUserSid = "";
if (sysUser != null) {
SysUserWxAuth sysUserWxAuth1=new SysUserWxAuth();
sysUserWxAuth1.setUnionid(sysUserWxBindMobileDto.getUnionid());
sysUserWxAuth1.setOpenid(sysUserWxBindMobileDto.getOpenid());
sysUserWxAuth1.setSysUserSid(sysUser.getSid());
boolean isSave = sysUserWxAuthService.save(sysUserWxAuth1);
if ( !isSave ){
return rb.setMsg("登陆:新增用户授权表失败");
}
return rb.setMsg("绑定成功");
}else{
return rb.setMsg("您的平台应用未被授权,请联系工作人员。");
}
}
}

11
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java

@ -380,13 +380,22 @@ public class WxSysUserRest implements WxSysUserFeign {
public ResultBean wxBindMobile(@RequestBody SysUserWxBindMobileDto sysUserWxBindMobileDto){
return sysUserService.wxBindMobile(sysUserWxBindMobileDto);
}
@PostMapping("/BindMobile")
@ApiOperation(value = "微信绑定手机")
public ResultBean BindMobile(@RequestBody SysUserWxBindMobileDto sysUserWxBindMobileDto){
return sysUserService.BindMobile(sysUserWxBindMobileDto);
}
@ApiOperation(value = "微信静默登录")
@GetMapping("/wxSilentLogin")
public ResultBean<SysUserLoginVo> wxSilentLogin(@RequestParam(value = "wxCode") String wxCode) {
return sysUserService.wxSilentLogin(wxCode);
}
@ApiOperation(value = "微信静默登录")
@GetMapping("/vSilentLogin")
public ResultBean<SysUserLoginVo> vSilentLogin(@RequestParam(value = "wxCode") String wxCode) {
return sysUserService.vSilentLogin(wxCode);
}
@ApiOperation(value = "微信静默登录")
@GetMapping("/SilentLogin")
public ResultBean<SysUserLoginVo> SilentLogin(@RequestParam(value = "wxCode") String wxCode) {
return sysUserService.SilentLogin(wxCode);

17
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java

@ -0,0 +1,17 @@
package com.yxt.supervise.system.sysuserwxauth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@TableName("sys_user_wx_auth")
public class SysUserWxAuth extends BaseEntity {
@ApiModelProperty(value = "关联的用户登陆Sid")
private String sysUserSid;
@ApiModelProperty(value = "openid")
private String openid;
@ApiModelProperty(value = "微信登陆唯一标识")
private String unionid;
}

13
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java

@ -0,0 +1,13 @@
package com.yxt.supervise.system.sysuserwxauth;
import com.yyd.portal.api.sysuser.SysUserFeignFallback;
import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(
contextId = "yyd-portal-SysUserWxAuth",
name = "yyd-portal-auth",
path = "v1/sysUserWxAuth",
fallback = SysUserFeignFallback.class)
public interface SysUserWxAuthFeign {
}

12
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java

@ -0,0 +1,12 @@
package com.yxt.supervise.system.sysuserwxauth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SysUserWxAuthMapper extends BaseMapper<SysUserWxAuth> {
SysUserWxAuth fetchByUnionidAndOpenid(String unionid, String openid);
List<SysUserWxAuth> fetchByUnionid(String unionid);
}

14
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yxt.supervise.system.sysuserwxauth.SysUserWxAuthMapper">
<select id="fetchByUnionidAndOpenid" resultType="com.yxt.supervise.system.sysuserwxauth.SysUserWxAuth">
SELECT *
FROM sys_user_wx_auth
WHERE unionid =#{unionid} AND openid =#{openid}
</select>
<select id="fetchByUnionid" resultType="com.yxt.supervise.system.sysuserwxauth.SysUserWxAuth">
SELECT *
FROM sys_user_wx_auth
WHERE unionid =#{unionid}
</select>
</mapper>

12
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java

@ -0,0 +1,12 @@
package com.yxt.supervise.system.sysuserwxauth;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "会员第三方登陆表")
@RestController
@RequestMapping("v1/sysUserWxAuth")
public class SysUserWxAuthRest implements SysUserWxAuthFeign {
}

24
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java

@ -0,0 +1,24 @@
package com.yxt.supervise.system.sysuserwxauth;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysUserWxAuthService extends MybatisBaseService<SysUserWxAuthMapper, SysUserWxAuth> {
// 临时发在这,后期需要把各个微服务单独做一个,或者做一个专门的常量类
// 体育活动组织报名工具
// public static final String APP_ID = "wxf869f371c1d0610c";
// public static final String SECRET = "377f7f40630ee5673cf081b461a9a750";
String APP_ID = "wxf869f371c1d0610c";
String SECRET = "377f7f40630ee5673cf081b461a9a750";
public SysUserWxAuth fetchByUnionidAndOpenid(String unionid , String openid){
return baseMapper.fetchByUnionidAndOpenid(unionid,openid);
}
public List<SysUserWxAuth> fetchByUnionid(String unionid){
return baseMapper.fetchByUnionid(unionid);
}
}
Loading…
Cancel
Save