| | |
| | | package org.jeecg.modules.system.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | |
| | | import org.jeecg.common.util.*; |
| | | import org.jeecg.config.mybatis.MybatisPlusSaasConfig; |
| | | import org.jeecg.modules.base.service.BaseCommonService; |
| | | import org.jeecg.modules.system.bo.TenantUserBo; |
| | | import org.jeecg.modules.system.entity.*; |
| | | import org.jeecg.modules.system.mapper.*; |
| | | import org.jeecg.modules.system.model.SysUserSysDepartModel; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String relTenantIds) { |
| | | //step.1 ä¿åç¨æ· |
| | | if(StringUtils.isNotEmpty(relTenantIds)){ |
| | | try { |
| | | user.setTenantId(Integer.valueOf(relTenantIds)); |
| | | user.setLoginTenantId(Integer.valueOf(relTenantIds)); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | this.save(user); |
| | | //è·åç¨æ·ä¿ååå°ä¼ è¿æ¥çç§æ·idå¹¶æ·»å å°ç§æ· |
| | | this.saveUserTenant(user.getId(),relTenantIds); |
| | |
| | | this.updateTenantDepart(user, tenantId, departs); |
| | | } |
| | | |
| | | /** |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public String syncTenantUser() { |
| | | LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | int tenantId = oConvertUtils.getInt(TenantContext.getTenant(), 0); |
| | | if(tenantId == 0){ |
| | | return "请ç»å½ç§æ·ç®¡çåååæ¥ç¨æ·ï¼"; |
| | | } |
| | | // æ¨¡ææ¥å£æ°æ® TODOä½¿ç¨æ¥å£æ°æ® |
| | | String json = "{\"code\":200,\"msg\":\"å¤çæå\",\"data\":[{\"id\":\"621466726\",\"name\":\"ç³ä¸\",\"birthday\":\"1992-08-19\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d5\",\"firstOrgName\":\"ä¿¡æ¯é¨\",\"firstOrgId\":\"1632356\",\"orgName\":\"ä¿¡æ¯é¨\",\"orgId\":\"1632356\",\"post\":null,\"postId\":null,\"status\":\"\",\"jobStatus\":\"\",\"workNo\":\"6518\",\"mobile\":\"13658340793\",\"leaderId\":\"619347944\",\"leader\":\"ç¨äºé£\"},{\"id\":\"621466727\",\"name\":\"å¼ ä¸\",\"birthday\":\"1993-05-15\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d6\",\"firstOrgName\":\"ææ¯é¨\",\"firstOrgId\":\"1632357\",\"orgName\":\"ææ¯é¨\",\"orgId\":\"1632357\",\"post\":\"å·¥ç¨å¸\",\"postId\":\"1001\",\"status\":\"å¨è\",\"jobStatus\":\"æ£å¸¸\",\"workNo\":\"6519\",\"mobile\":\"13658340794\",\"leaderId\":\"619347945\",\"leader\":\"æå\"},{\"id\":\"621466728\",\"name\":\"çäº\",\"birthday\":\"1991-12-20\",\"rank\":\"bad0f40d-6ed9-4d7a-82f8-95af7d9f47d7\",\"firstOrgName\":\"å¸åºé¨\",\"firstOrgId\":\"1632358\",\"orgName\":\"å¸åºé¨\",\"orgId\":\"1632358\",\"post\":\"ç»ç\",\"postId\":\"1002\",\"status\":\"å¨è\",\"jobStatus\":\"æ£å¸¸\",\"workNo\":\"6520\",\"mobile\":\"13658340795\",\"leaderId\":\"619347946\",\"leader\":\"èµµå
\"}]}"; |
| | | JSONObject jsonObject = JSON.parseObject(json); |
| | | JSONArray data = jsonObject.getJSONArray("data"); |
| | | List<TenantUserBo> remoteTenantUserList = data.toJavaList(TenantUserBo.class); |
| | | System.err.println(remoteTenantUserList); |
| | | |
| | | // æ¥è¯¢ç§æ·ä¸ç¨æ· |
| | | List<String> tenantUserIds = userTenantMapper.getUserIdsByTenantId(tenantId); |
| | | LambdaQueryWrapper<SysUser> userQueryWrapper = new LambdaQueryWrapper<>(); |
| | | userQueryWrapper.in(SysUser::getId, tenantUserIds); |
| | | List<SysUser> tenantUserList = this.baseMapper.selectList(userQueryWrapper); |
| | | |
| | | |
| | | // æåtenantUserListä¸çææusernameä½ä¸ºå¯¹æ¯ä¾æ® |
| | | Set<String> tenantUsernames = tenantUserList.stream() |
| | | .map(SysUser::getUsername) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | // 1. remoteTenantUserListä¸ä¸å
å«å¨tenantUserListä¸çè®°å½ |
| | | List<TenantUserBo> remoteNotInTenant = remoteTenantUserList.stream() |
| | | .filter(remoteUser -> !tenantUsernames.contains(remoteUser.getWorkNo())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 2. remoteTenantUserListä¸å
å«å¨tenantUserListä¸çè®°å½ |
| | | List<TenantUserBo> remoteInTenant = remoteTenantUserList.stream() |
| | | .filter(remoteUser -> tenantUsernames.contains(remoteUser.getWorkNo())) |
| | | .collect(Collectors.toList()); |
| | | AtomicInteger successCount = new AtomicInteger(0); |
| | | AtomicInteger failedCount = new AtomicInteger(0); |
| | | for (int i = 0; i <remoteNotInTenant.size() ; i++) { |
| | | TenantUserBo tenantUserBo = remoteNotInTenant.get(i); |
| | | addUser(tenantUserBo,tenantId,successCount,failedCount); |
| | | } |
| | | if(remoteTenantUserList.size()>0){ |
| | | return "忥"+remoteTenantUserList.size()+"æ¡æ°æ®ï¼å·²åå¨"+remoteInTenant.size() +"æ¡ï¼æåæ°å¢"+successCount.get()+"æ¡ï¼å¤±è´¥"+failedCount.get()+"æ¡"; |
| | | } |
| | | |
| | | return "忥æ¥å£æªè¿åæ°æ®ï¼"; |
| | | } |
| | | |
| | | private void addUser(TenantUserBo tenantUserBo,Integer tenantId,AtomicInteger successCount, AtomicInteger failedCount) { |
| | | SysUser user = new SysUser(); |
| | | user.setLoginTenantId(tenantId); |
| | | user.setTenantId(tenantId); |
| | | user.setCreateTime(new Date());// 设置å建æ¶é´ |
| | | String salt = oConvertUtils.randomGen(8); |
| | | String passwordEncode = PasswordUtil.encrypt(tenantUserBo.getWorkNo(), "123456", salt); |
| | | user.setSalt(salt); |
| | | user.setUsername(tenantUserBo.getWorkNo()); |
| | | user.setRealname(tenantUserBo.getName()); |
| | | user.setPassword(passwordEncode); |
| | | user.setPhone(tenantUserBo.getMobile()); |
| | | user.setStatus(CommonConstant.USER_UNFREEZE); |
| | | user.setDelFlag(CommonConstant.DEL_FLAG_0); |
| | | user.setActivitiSync(CommonConstant.ACT_SYNC_0); |
| | | boolean save = this.save(user); |
| | | |
| | | if(save){ |
| | | this.saveUserTenant(user.getId(),String.valueOf(tenantId)); |
| | | successCount.incrementAndGet(); |
| | | }else { |
| | | failedCount.incrementAndGet(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ç§æ·ä¸çé¨é¨ |
| | | * @param departs |
| | | */ |