公众号登录
This commit is contained in:
parent
c6c7e77adc
commit
49fce741eb
|
|
@ -1,18 +1,10 @@
|
||||||
package com.mdd.front.controller;
|
package com.mdd.front.controller;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
import com.mdd.common.core.AjaxResult;
|
import com.mdd.common.core.AjaxResult;
|
||||||
import com.mdd.common.utils.ConfigUtil;
|
|
||||||
import com.mdd.common.utils.WeChatUtil;
|
|
||||||
import com.mdd.front.service.ILoginService;
|
import com.mdd.front.service.ILoginService;
|
||||||
import com.mdd.front.validate.RegParam;
|
import com.mdd.front.validate.RegParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import me.chanjar.weixin.common.api.WxConsts;
|
|
||||||
import me.chanjar.weixin.mp.api.WxMpService;
|
|
||||||
import me.chanjar.weixin.mp.api.impl.WxMpOAuth2ServiceImpl;
|
|
||||||
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
|
||||||
import me.chanjar.weixin.mp.enums.WxMpApiUrl;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
@ -69,12 +61,17 @@ public class LoginController {
|
||||||
return AjaxResult.success(map);
|
return AjaxResult.success(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公众号登录
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param params 参数
|
||||||
|
* @return Object
|
||||||
|
*/
|
||||||
@GetMapping("/oaLogin")
|
@GetMapping("/oaLogin")
|
||||||
public Object oaLogin(@RequestParam Map<String, String> params) {
|
public Object oaLogin(@RequestParam Map<String, String> params) {
|
||||||
// log.error("微信公众号 ===================");
|
Map<String, Object> map = iLoginService.officeLogin(params);
|
||||||
log.error(JSON.toJSONString(params));
|
return AjaxResult.success(map);
|
||||||
//iLoginService.officeLogin(params);
|
|
||||||
return AjaxResult.success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@ package com.mdd.front.service.impl;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
import com.mdd.common.config.GlobalConfig;
|
import com.mdd.common.config.GlobalConfig;
|
||||||
import com.mdd.common.entity.user.User;
|
import com.mdd.common.entity.user.User;
|
||||||
import com.mdd.common.entity.user.UserAuth;
|
import com.mdd.common.entity.user.UserAuth;
|
||||||
|
import com.mdd.common.enums.ClientEnum;
|
||||||
import com.mdd.common.enums.NoticeEnum;
|
import com.mdd.common.enums.NoticeEnum;
|
||||||
import com.mdd.common.exception.OperateException;
|
import com.mdd.common.exception.OperateException;
|
||||||
import com.mdd.common.mapper.user.UserAuthMapper;
|
import com.mdd.common.mapper.user.UserAuthMapper;
|
||||||
|
|
@ -22,7 +22,6 @@ import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
||||||
import me.chanjar.weixin.common.error.WxErrorException;
|
import me.chanjar.weixin.common.error.WxErrorException;
|
||||||
import me.chanjar.weixin.mp.api.WxMpService;
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
import me.chanjar.weixin.mp.api.impl.WxMpOAuth2ServiceImpl;
|
import me.chanjar.weixin.mp.api.impl.WxMpOAuth2ServiceImpl;
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpUser;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
|
@ -101,7 +100,6 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
String unionId = uniId == null ? "0" : uniId;
|
String unionId = uniId == null ? "0" : uniId;
|
||||||
|
|
||||||
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper<UserAuth>()
|
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper<UserAuth>()
|
||||||
.eq("client", client)
|
|
||||||
.nested(wq->wq
|
.nested(wq->wq
|
||||||
.eq("openid", openId).or()
|
.eq("openid", openId).or()
|
||||||
.eq("unionid", unionId)
|
.eq("unionid", unionId)
|
||||||
|
|
@ -121,7 +119,7 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
User model = new User();
|
User model = new User();
|
||||||
model.setSn(sn);
|
model.setSn(sn);
|
||||||
model.setAvatar(avatarUrl);
|
model.setAvatar(avatarUrl);
|
||||||
model.setNickname(nickName.equals("")?"用户"+sn:nickName);
|
model.setNickname(nickName.equals("") ? "用户"+sn : nickName);
|
||||||
model.setUsername("u"+sn);
|
model.setUsername("u"+sn);
|
||||||
model.setSex(Integer.parseInt(gender));
|
model.setSex(Integer.parseInt(gender));
|
||||||
model.setChannel(client);
|
model.setChannel(client);
|
||||||
|
|
@ -270,13 +268,78 @@ public class LoginServiceImpl implements ILoginService {
|
||||||
try {
|
try {
|
||||||
WxMpService wxMpService = WeChatUtil.official();
|
WxMpService wxMpService = WeChatUtil.official();
|
||||||
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
WxOAuth2AccessToken wxOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(code);
|
||||||
|
String uniId = wxOAuth2AccessToken.getUnionId();
|
||||||
|
String openId = wxOAuth2AccessToken.getOpenId();
|
||||||
|
String unionId = uniId == null ? "0" : uniId;
|
||||||
|
|
||||||
// WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxOAuth2AccessToken.getAccessToken());
|
UserAuth userAuth = userAuthMapper.selectOne(new QueryWrapper<UserAuth>()
|
||||||
System.out.println(wxOAuth2AccessToken.getOpenId());
|
.nested(wq->wq
|
||||||
} catch (WxErrorException e) {
|
.eq("unionid", unionId).or()
|
||||||
System.out.println(e.getError());
|
.eq("openid", openId)
|
||||||
|
).last("limit 1"));
|
||||||
|
|
||||||
|
Integer userId;
|
||||||
|
User user = null;
|
||||||
|
if (StringUtil.isNotNull(userAuth)) {
|
||||||
|
user = userMapper.selectOne(new QueryWrapper<User>()
|
||||||
|
.eq("is_delete", 0)
|
||||||
|
.eq("id", userAuth.getUserId())
|
||||||
|
.last("limit 1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtil.isNull(user)) {
|
||||||
|
Integer sn = this.randMakeSn();
|
||||||
|
User model = new User();
|
||||||
|
model.setSn(sn);
|
||||||
|
model.setAvatar("/api/static/default_avatar.png");
|
||||||
|
model.setNickname("用户" + sn);
|
||||||
|
model.setUsername("u"+sn);
|
||||||
|
model.setChannel(ClientEnum.OA.getCode());
|
||||||
|
model.setSex(0);
|
||||||
|
model.setLastLoginIp(IpUtil.getHostIp());
|
||||||
|
model.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||||
|
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
|
model.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
|
userMapper.insert(model);
|
||||||
|
userId = model.getId();
|
||||||
|
user = model;
|
||||||
|
|
||||||
|
if (StringUtil.isNull(userAuth)) {
|
||||||
|
UserAuth auth = new UserAuth();
|
||||||
|
auth.setUserId(model.getId());
|
||||||
|
auth.setUnionid(unionId);
|
||||||
|
auth.setOpenid(openId);
|
||||||
|
auth.setClient(ClientEnum.OA.getCode());
|
||||||
|
auth.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
|
auth.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
|
userAuthMapper.insert(auth);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 更新微信标识
|
||||||
|
userId = user.getId();
|
||||||
|
if (StringUtil.isEmpty(userAuth.getUnionid()) && StringUtil.isNotEmpty(unionId)) {
|
||||||
|
userAuth.setUnionid(unionId);
|
||||||
|
userAuthMapper.updateById(userAuth);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新登录信息
|
||||||
|
user.setLastLoginIp(IpUtil.getHostIp());
|
||||||
|
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||||
|
userMapper.updateById(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
String token = ToolsUtil.makeToken();
|
||||||
|
RedisUtil.set(FrontConfig.frontendTokenKey+token, userId, 7201);
|
||||||
|
|
||||||
|
Map<String, Object> response = new LinkedHashMap<>();
|
||||||
|
response.put("id", userId);
|
||||||
|
response.put("isBindMobile", !user.getMobile().equals(""));
|
||||||
|
response.put("token", token);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
} catch (WxErrorException e) {
|
||||||
|
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue