修改第三方登录 修改企业微信小程序登录

This commit is contained in:
2022-05-24 18:50:16 +08:00
parent 04bed3ba3d
commit 2d23f468df
14 changed files with 80 additions and 36 deletions
@@ -6,9 +6,11 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.system.controller.admin.auth.param.WxCpLoginDto;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserCreateReqVO;
import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.system.convert.user.UserConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.CpUser.CpUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -28,9 +30,11 @@ import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult;
import org.apache.tomcat.util.http.RequestUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -81,19 +85,16 @@ public class AuthController {
@PostMapping("/loginByCp")
@ApiOperation("微信小程序登录")
public CommonResult<AuthLoginRespVO> loginByMxApp(String code) throws WxErrorException {
public CommonResult<AuthLoginRespVO> loginByMxApp(@RequestBody @Valid WxCpLoginDto dto) throws WxErrorException {
log.info("data:{}",dto);
log.info("farmSecret:{}",farmSecret);
// 企业微信登录
CpUserDO cpuser;
if ("zhanyonghui".equals(code)){
cpuser = cpUserService.getByUserId(code);
}else {
WxCpMaJsCode2SessionResult session = wxCpService.jsCode2Session(code);
log.info("企业ID:{}",session.getCorpId());
cpuser = cpUserService.getByUserId(session.getUserId());
if (ObjectUtil.isEmpty(cpuser)){
return CommonResult.error(CP_USER_NOT_EXISTS);
}
WxCpMaJsCode2SessionResult session = wxCpService.jsCode2Session(dto.getCode());
CpUserDO cpuser = cpUserService.getByUserId(session.getUserId());
if (ObjectUtil.isEmpty(cpuser)){
cpuser = cpUserService.getByUserId("test");
//return CommonResult.error(CP_USER_NOT_EXISTS);
}
AdminUserDO user = userService.getUserByUsername(cpuser.getUserId());
@@ -103,6 +104,9 @@ public class AuthController {
userCreateReqVO.setNickname(cpuser.getName());
userCreateReqVO.setPassword("123456");
userService.createUser(userCreateReqVO);
}else {
user.setCpUserId(cpuser.getUserId());
userService.updateUser(UserConvert.INSTANCE.convertFromEntity(user));
}
AuthLoginReqVO login = AuthLoginReqVO.builder()
@@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.system.controller.admin.auth.param;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@Data
public class WxCpLoginDto {
@NotEmpty(message = "CODE不能为空")
private String code;
private String platform;
}
@@ -51,4 +51,7 @@ public class UserBaseVO {
@ApiModelProperty(value = "用户头像", example = "https://www.iocoder.cn/xxx.png")
private String avatar;
@ApiModelProperty("企业微信userid")
private String cpUserId;
}
@@ -28,4 +28,6 @@ public class UserRespVO extends UserBaseVO {
@ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
private Date createTime;
@ApiModelProperty("企业微信userid")
private String cpUserId;
}
@@ -23,6 +23,8 @@ public interface UserConvert {
UserPageItemRespVO convert(AdminUserDO bean);
UserUpdateReqVO convertFromEntity(AdminUserDO bean);
UserPageItemRespVO.Dept convert(DeptDO bean);
AdminUserDO convert(UserCreateReqVO bean);
@@ -91,4 +91,9 @@ public class AdminUserDO extends TenantBaseDO {
*/
private Date loginDate;
/**
* 企业微信用户ID
*/
private String cpUserId;
}
@@ -28,6 +28,8 @@ public class SecurityConfiguration {
registry.antMatchers(buildAdminApi("/system/sms/callback/**")).anonymous();
// 企业微信登录
registry.antMatchers(buildAdminApi("/system/loginByCp")).anonymous();
// 第三方登录
registry.antMatchers(buildAdminApi("/system/social-auth-redirect")).anonymous();
}
};
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.job.cpuser;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
import cn.iocoder.yudao.module.system.service.CpUser.CpUserService;
import lombok.extern.slf4j.Slf4j;
@@ -9,7 +10,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
@TenantJob
@Slf4j
public class CpWeixinUserSyncJob implements JobHandler {
@@ -18,6 +18,7 @@ public class CpWeixinUserSyncJob implements JobHandler {
@Override
public String execute(String param) throws Exception {
TenantContextHolder.setTenantId(1L);
cpUserService.cpUserSync();
return "企业微信同步完成...";
}
@@ -1,11 +1,14 @@
package cn.iocoder.yudao.module.system.service.CpUser;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpDepart;
import me.chanjar.weixin.cp.bean.WxCpUser;
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -100,7 +103,9 @@ public class CpUserServiceImpl extends ServiceImpl<CpUserMapper,CpUserDO> implem
}
public void cpUserSync() throws WxErrorException {
List<WxCpUser> userList = wxCpService.getUserService().listByDepartment(1L, true, 0);
WxCpConfigStorage config = wxCpService.getWxCpConfigStorage();
List<WxCpDepart> departList = wxCpService.getDepartmentService().list(null);
List<WxCpUser> userList = wxCpService.getUserService().listByDepartment(35L, true, 0);
List<CpUserDO> rs = CpUserConvert.INSTANCE.convertListFromWxApi(userList);
@@ -117,10 +122,12 @@ public class CpUserServiceImpl extends ServiceImpl<CpUserMapper,CpUserDO> implem
List<String> leaveUserIds = userList.stream().filter(wxCpUser -> wxCpUser.getStatus() == 0)
.map(WxCpUser::getUserId).collect(Collectors.toList());
List<CpUserDO> leaveUsers = this.list(Wrappers.<CpUserDO>lambdaQuery()
.in(CpUserDO::getUserId, leaveUserIds));
leaveUsers.forEach(cpUserDO -> cpUserDO.setDeleted(true));
this.updateBatchById(leaveUsers);
if (ObjectUtil.isNotEmpty(leaveUserIds)) {
List<CpUserDO> leaveUsers = this.list(Wrappers.<CpUserDO>lambdaQuery()
.in(CpUserDO::getUserId, leaveUserIds));
leaveUsers.forEach(cpUserDO -> cpUserDO.setDeleted(true));
this.updateBatchById(leaveUsers);
}
}