Commit 4bb6bf86 authored by luzhuang's avatar luzhuang

feat: 添加自动同步 用户和管理员(智学1.0)

parent c830505b
package org.rcisoft.core.task;
import lombok.extern.slf4j.Slf4j;
import org.rcisoft.sys.role.dao.SysRoleRepository;
import org.rcisoft.sys.user.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lz on 20/6/19.
*/
@Component
@Slf4j
public class UserManageTask {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysRoleRepository sysRoleRepository;
@Scheduled(cron = "${eduJob.userManageJob:0 0 /2 * * ?}")
public void work() {
//获取 智学开通所有企业id
List<String> corpIds = sysRoleRepository.getCorpIds();
//循环调用 同步接口
corpIds.forEach(c->sysUserService.synchronizedALL(c));
}
}
......@@ -244,4 +244,16 @@ public interface SysRoleRepository extends BaseMapper<SysRole> {
@Update("update tm_admin_role set type = #{type} , depart_ids = #{departIds} where r_id = #{businessId}")
int updateRoleData(SysRole sysRole);
//删除当前管理员对应的用户
@Delete("delete from s_r_user_role where role_id = #{roleId} ")
int deleteUserRole(String roleId);
//获取当前企业的 管理员角色id
@Select("select * from tm_admin_role where corp_id = #{corpId} and r_type = #{rType} ")
String getRoleId(@Param("corpId") String corpId,@Param("rType") String rType);
//获取 智学开通的企业 id
@Select("select DISTINCT corp_id from tm_admin_role where r_type = 0")
List<String> getCorpIds();
}
......@@ -63,7 +63,7 @@ public class SysUserController extends PaginationController<SysUser> {
@GetMapping("/gets")
@ApiOperation(value = "|personnels|同步人员", notes = "同步人员信息")
public Result synchronizedUsers(@RequestParam String corpId) throws ParseException {
int line = userServiceImpl.synchronizedUsers(corpId);
int line = userServiceImpl.synchronizedALL(corpId);
return Result.builder(new PersistModel(1),
MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR,
......
......@@ -46,8 +46,25 @@ public interface SysUserService {
int insertOrUpdateList(List<SysUser> sysUserList);
/**
* 同步用户信息
* @param corpId
* @return
* @throws ParseException
*/
int synchronizedUsers(String corpId) throws ParseException;
/**
* 同步管理员信息
* @param corpId
* @return
*/
void synchronizedManages(String corpId);
int synchronizedALL(String corpId);
/**
* zhangqingle
* 我的智学也查询个人信息及课程、培训、考试数量
......
......@@ -8,10 +8,7 @@ import org.rcisoft.business.bexternallink.dto.MenuDTO;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
import org.rcisoft.business.synchronizationtime.service.SynchronizationTimeService;
import org.rcisoft.common.component.Global;
import org.rcisoft.common.util.feignDto.GetAllRspDTO;
import org.rcisoft.common.util.feignDto.MTGetUserByDeptIdsRspDTO;
import org.rcisoft.common.util.feignDto.MTUserGetsReqDTO;
import org.rcisoft.common.util.feignDto.MTUserInfoRspDTO;
import org.rcisoft.common.util.feignDto.*;
import org.rcisoft.common.util.outClient.MTCotactApiRequestClient;
import org.rcisoft.core.aop.PageUtil;
import org.rcisoft.core.exception.ServiceException;
......@@ -19,6 +16,8 @@ import org.rcisoft.core.result.ResultServiceEnums;
import org.rcisoft.core.util.IdGen;
import org.rcisoft.core.util.UserUtil;
import org.rcisoft.sys.menu.dao.SysMenuRepository;
import org.rcisoft.sys.role.dao.SysRoleRepository;
import org.rcisoft.sys.role.dto.UserRoleDTO;
import org.rcisoft.sys.user.dto.QueryMenuResDTO;
import org.rcisoft.sys.menu.entity.SysMenu;
import org.rcisoft.sys.user.bean.CurUser;
......@@ -62,6 +61,12 @@ public class SysUserServiceImpl implements SysUserService {
@Autowired
MTCotactApiRequestClient mtCotactApiRequestClient;
@Autowired
MTCotactApiRequestClient cotactApiRequestClient;
@Autowired
private SysRoleRepository sysRoleRepository;
@Autowired
private Global global;
......@@ -476,6 +481,38 @@ public class SysUserServiceImpl implements SysUserService {
return line;
}
@Override
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,rollbackFor = Exception.class)
public void synchronizedManages(String corpId){
//获取当前企业 主管理员角色id
String mRId = sysRoleRepository.getRoleId(corpId,"0");
//获取智信接口 所有主管理员
List<CorpGetManager> userMainList = cotactApiRequestClient.corpGetManager(corpId,"1");
if (userMainList != null && userMainList.size() > 0){
userMainList = this.accountIdToBusinessId(userMainList,corpId);
List<UserRoleDTO> userRoleDTOList = setUserRole(userMainList,mRId);
//先删除掉 关系表中的数据
sysRoleRepository.deleteUserRole(mRId);
//再插入s_r_user_role
sysRoleRepository.addUserRole(userRoleDTOList);
}
//获取当前企业 子管理员角色id
String sRId = sysRoleRepository.getRoleId(corpId,"1");
List<CorpGetManager> userSubMainList = cotactApiRequestClient.corpGetManager(corpId,"2");
if (userSubMainList != null && userSubMainList.size() > 0){
userSubMainList = this.accountIdToBusinessId(userSubMainList,corpId);
List<UserRoleDTO> userSubRoleDTOList = setUserRole(userSubMainList,sRId);
//先删除掉 关系表中的数据
sysRoleRepository.deleteUserRole(sRId);
//插入s_r_user_role表
sysRoleRepository.addUserRole(userSubRoleDTOList);
}
}
@Override
public MyInfoDTO queryMyInfo(CurUser curUser) {
MyInfoDTO myInfoDTOCount = sysUserMapper.queryMyLessonCount(curUser);
......@@ -526,4 +563,61 @@ public class SysUserServiceImpl implements SysUserService {
public MyInfoDTO getNameById(String id) {
return sysUserMapper.getNameById(id);
}
/**
* 根据AccountId查询用户user表中真实BusinessId
* @param MainList
* @return
*/
List<CorpGetManager> accountIdToBusinessId(List<CorpGetManager> MainList,String corpId){
StringBuffer sb = new StringBuffer();
for(CorpGetManager user : MainList){
sb.append(user.getAccountId()+",");
}
String accountId = sb.toString().substring(0,sb.toString().length() - 1);
List<SysUser> businessId = sysUserMapper.getBusinessIdByAccountId(accountId,corpId);
if(businessId != null && businessId.size() > 0){
for(SysUser sysUser:businessId){
for(CorpGetManager c : MainList){
if(sysUser.getAccountId().equals(c.getAccountId())){
c.setId(sysUser.getBusinessId());
}
}
}
}
return MainList;
}
List<UserRoleDTO> setUserRole(List<CorpGetManager> userMainList ,String rId){
List<UserRoleDTO> userRoleDTOList = new ArrayList<>();
userMainList.forEach(user->{
UserRoleDTO userRoleDTO = new UserRoleDTO();
userRoleDTO.setBusinessId(IdGen.uuid());
userRoleDTO.setRoleId(rId);
userRoleDTO.setUserId(user.getId());
userRoleDTOList.add(userRoleDTO);
});
return userRoleDTOList;
}
/**
* 同步 智信用户和管理员
* @param corpId
* @return
*/
@Override
public int synchronizedALL(String corpId){
synchronizedManages(corpId);
int line = 0;
try {
line = synchronizedUsers(corpId);
} catch (ParseException e) {
e.printStackTrace();
}
return line;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment