1.根据微信code获取换取用户登录态信息
点击查看代码
/**
* 根据code获取小程序用户openpid
*/
@Override
public R<Map<String, String>> getUnitCheckPersonOpenId(String code){
R<Map<String, String>> resMap = new R<>();
//获取用户openid
String wxAppIdUrl = WxLoginConstant.WX_LOGIN_URL + "?appid=" + WxLoginConstant.APP_ID + "&secret=" +
WxLoginConstant.SECRET + "&js_code=" + code + "&grant_type=" + WxLoginConstant.GRANT_TYPE;
R<Object> tokenRes = RequestUtil.GET(wxAppIdUrl, null);
Integer resCode = tokenRes.getCode();
if (resCode == HttpStatus.SC_OK){
Object tokenData = tokenRes.getData();
WxLoginResVo tokenResVo = JSON.parseObject(tokenData.toString(), WxLoginResVo.class);
if (Objects.nonNull(tokenResVo)){
String openid = tokenResVo.getOpenid();
if (StringUtils.isNotBlank(openid)){
//根据openid查询db是否存在此记录
WghHiddenSelfCheckUnitPersonVo unitCheckPerson = getUnitCheckPersonByOpenid(openid);
Map<String, String> map = Maps.newHashMap();
if (Objects.nonNull(unitCheckPerson)){
//1.存在
map.put("isExistOpenId","y");
//更新
} else {
//2.不存在
map.put("isExistOpenId","n");
}
//用户唯一标识
map.put("openid",openid);
resMap.setCode(200);
resMap.setMsg("成功");
resMap.setData(map);
} else {
resMap.setCode(tokenResVo.getErrcode());
resMap.setMsg(tokenResVo.getErrmsg());
}
}
}else {
resMap.setCode(500);
resMap.setMsg("http调用微信接口获取用户openid失败");
}
return resMap;
}s
点击查看代码
/**
* 根据openid判断是否为系统内部人员、公众人员
*/
@Override
public R<Map<String,String>> getHiddenSelfCheckIsHasUnitInfo(String openid) {
R<Map<String, String>> resMap = new R<>();
if (StringUtils.isBlank(openid)) {
resMap.setCode(501);
resMap.setMsg("openid参数不能为空");
return resMap;
}
LambdaQueryWrapper<WghHiddenSelfCheckUnitPerson> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(openid), WghHiddenSelfCheckUnitPerson::getOpenid, openid);
WghHiddenSelfCheckUnitPersonVo objVo = baseMapper.selectVoOne(lqw);
if (Objects.isNull(objVo)) {
resMap.setCode(502);
resMap.setMsg("无法根据openid查询到用户信息");
return resMap;
}
Map<String, String> map = Maps.newHashMap();
Long sysUserId = objVo.getSysUserId();
if (Objects.nonNull(sysUserId)) {
//系统用户
map.put("isSysUser", "y");
//生成token
SysUser sysUser = sysUserMapper.selectUserById(sysUserId);
if (Objects.nonNull(sysUser)) {
LoginUser loginUser = SysLoginService.buildLoginUser(sysUser);
LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
String token = StpUtil.getTokenValue();
map.put("token", token);
} else {
resMap.setCode(401);
resMap.setMsg("系统中不存在此用户信息");
}
} else {
//公众用户
map.put("isSysUser", "n");
}
resMap.setCode(200);
resMap.setMsg("成功");
resMap.setData(map);
return resMap;
}
点击查看代码
/**
* 根据openid完善小程序登录个人信息
*/
@Override
public Boolean hiddenSelfCheckUnitUserInfo(WghHiddenSelfCheckUnitPersonBo bo) {
if (StringUtils.isBlank(bo.getPhone())){
return false;
}
// 1.根据手机号查询db是否存在此记录
Boolean flag;
LambdaQueryWrapper<WghHiddenSelfCheckUnitPerson> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getPhone()),WghHiddenSelfCheckUnitPerson::getPhone,bo.getPhone());
WghHiddenSelfCheckUnitPersonVo vo = baseMapper.selectVoOne(lqw);
if (Objects.nonNull(vo)){
//1.1是则为系统用户第一次登录,需绑定小程序openid
//更新db
UpdateWrapper<WghHiddenSelfCheckUnitPerson> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("phone", bo.getPhone());
updateWrapper.set("openid",bo.getOpenid());
flag = baseMapper.update(null,updateWrapper) > 0;
}else {
//1.2否,说明是自查自改单位人员,则新增(手机号、用户名、openid)
//新增
WghHiddenSelfCheckUnitPerson add = BeanUtil.toBean(bo, WghHiddenSelfCheckUnitPerson.class);
flag = baseMapper.insert(add) > 0;
}
return flag;
}