|
@@ -28,6 +28,7 @@ import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.checkerframework.checker.units.qual.C;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -122,6 +123,45 @@ public class WxH5MpController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation("炮灰小程序-公众号登录转小程序")
|
|
|
+ @PostMapping("/courseLoginByMp")
|
|
|
+ public R courseLoginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
|
|
|
+ log.info("=====================进入炮灰小程序-公众号授权登录, 入参: {}", param);
|
|
|
+
|
|
|
+ // 参数校验
|
|
|
+ if (StringUtils.isBlank(param.getCode())) {
|
|
|
+ return R.error("code不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 公司状态校验
|
|
|
+ Company company = companyService.selectCompanyById(param.getCompanyId());
|
|
|
+ if (company == null || company.getStatus() == 0) {
|
|
|
+ return R.error("注册失败团队已停用,或不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 客服状态校验
|
|
|
+ CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
|
|
|
+ if (companyUser == null || "1".equals(companyUser.getStatus())) {
|
|
|
+ return R.error("注册失败客服已停用,或不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 获取微信用户信息
|
|
|
+ WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
|
|
|
+ WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
|
|
|
+
|
|
|
+ // 处理用户信息
|
|
|
+ FsUser user = processUserInfoByCourseLoginByMp(wxMpUser);
|
|
|
+
|
|
|
+ // 生成token并返回结果
|
|
|
+ return generateLoginResult(user);
|
|
|
+ } catch (WxErrorException e) {
|
|
|
+ this.logger.error(e.getMessage(), e);
|
|
|
+ return R.error("授权失败," + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private FsUser processUserInfo(WxOAuth2UserInfo wxMpUser, Company company,CompanyUser companyUser,FsUserLoginByMpParam param) {
|
|
|
FsUser user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
|
|
|
|
|
@@ -158,6 +198,36 @@ public class WxH5MpController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private FsUser processUserInfoByCourseLoginByMp(WxOAuth2UserInfo wxMpUser) {
|
|
|
+ FsUser user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
|
|
|
+
|
|
|
+ if (user != null) {
|
|
|
+ // 更新现有用户信息
|
|
|
+ FsUser userUpdate = new FsUser();
|
|
|
+ userUpdate.setUserId(user.getUserId());
|
|
|
+ userUpdate.setMpOpenId(wxMpUser.getOpenid());
|
|
|
+ userUpdate.setUnionId(wxMpUser.getUnionId());
|
|
|
+ userUpdate.setUpdateTime(new DateTime());
|
|
|
+ userUpdate.setNickName(wxMpUser.getNickname());
|
|
|
+ userUpdate.setAvatar(wxMpUser.getHeadImgUrl());
|
|
|
+ userService.updateFsUser(userUpdate);
|
|
|
+ return userUpdate;
|
|
|
+ } else {
|
|
|
+ // 创建新用户
|
|
|
+ FsUser newUser = new FsUser();
|
|
|
+ newUser.setNickName(wxMpUser.getNickname());
|
|
|
+ newUser.setAvatar(wxMpUser.getHeadImgUrl());
|
|
|
+ newUser.setStatus(1);
|
|
|
+ newUser.setMpOpenId(wxMpUser.getOpenid());
|
|
|
+// newUser.setCompanyId(company.getCompanyId());
|
|
|
+// newUser.setCompanyUserId(companyUser.getUserId());
|
|
|
+ newUser.setUnionId(wxMpUser.getUnionId());
|
|
|
+ newUser.setCreateTime(new Date());
|
|
|
+ userService.insertFsUser(newUser);
|
|
|
+ return newUser;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void processUserCompanyRelationship(FsUser user, FsUserLoginByMpParam param,
|
|
|
CompanyUser companyUser, Company company) {
|
|
|
if ((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() == 1)
|