|
|
@ -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 20:30 创建 |
|
|
|
*/ |
|
|
|
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("您的平台应用未被授权,请联系工作人员。"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |