|
|
|
@ -36,6 +36,7 @@ import java.util.zip.ZipEntry;
|
|
|
|
|
import java.util.zip.ZipOutputStream;
|
|
|
|
|
|
|
|
|
|
import static com.kiisoo.ic.employee.constant.Constants.*;
|
|
|
|
|
import static java.util.regex.Pattern.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 用户管理service
|
|
|
|
@ -120,6 +121,11 @@ public class EmployeeService {
|
|
|
|
|
privilageCpUserStoreDOMapper.insert(cpUserStoreDO);
|
|
|
|
|
//成功则添加用户到企业微信
|
|
|
|
|
qwMailListManageService.addUser(employee);
|
|
|
|
|
|
|
|
|
|
//从企业微信通讯录反向更新(更新二维码信息)
|
|
|
|
|
WxCpUser wxCpUser = qwMailListManageService.getUser(employee.getUserId());
|
|
|
|
|
insertOrupdateUserFromNet(wxCpUser);
|
|
|
|
|
|
|
|
|
|
return ADD_CP_CODE_SUCCESS;
|
|
|
|
|
} else {
|
|
|
|
|
Long cpUserId = cuUserIdUser.get(0).getId();
|
|
|
|
@ -139,6 +145,46 @@ public class EmployeeService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 从企业微信端获取的数据,插入或更新库中数据
|
|
|
|
|
* @param wxCpUser 企业微信端用户对象
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void insertOrupdateUserFromNet(WxCpUser wxCpUser) throws Exception {
|
|
|
|
|
QueryWrapper<PrivilageCpUserDO> cuUserIdParams = new QueryWrapper<>();
|
|
|
|
|
cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY, wxCpUser.getUserId());
|
|
|
|
|
List<PrivilageCpUserDO> cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams);
|
|
|
|
|
|
|
|
|
|
PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO();
|
|
|
|
|
BeanUtils.copyProperties(wxCpUser, privilageCpUserDO);
|
|
|
|
|
privilageCpUserDO.setCpUserId(wxCpUser.getUserId());
|
|
|
|
|
String alias = privilageCpUserDO.getAlias();
|
|
|
|
|
alias = filterEmoji(alias);
|
|
|
|
|
privilageCpUserDO.setAlias(alias);
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(cuUserIdUser)) {
|
|
|
|
|
//添加用户
|
|
|
|
|
int insert = privilageCpUserDOMapper.insert(privilageCpUserDO);
|
|
|
|
|
} else {
|
|
|
|
|
privilageCpUserDO.setId(cuUserIdUser.get(0).getId());
|
|
|
|
|
//修改用户
|
|
|
|
|
int update = privilageCpUserDOMapper.updateById(privilageCpUserDO);
|
|
|
|
|
//维护部门关系——删除原有部门关系
|
|
|
|
|
QueryWrapper<PrivilageCpUserDepartmentDO> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(DATABASE_CP_USER_ID_KEY, cuUserIdUser.get(0).getId());
|
|
|
|
|
privilageCpUserDepartmentDOMapper.delete(queryWrapper);
|
|
|
|
|
}
|
|
|
|
|
Long[] departIds = wxCpUser.getDepartIds();
|
|
|
|
|
Integer[] orders = wxCpUser.getOrders();
|
|
|
|
|
Integer[] isLeaderInDept = wxCpUser.getIsLeaderInDept();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < departIds.length; i++) {
|
|
|
|
|
PrivilageCpUserDepartmentDO relation = new PrivilageCpUserDepartmentDO(privilageCpUserDO.getId(), departIds[i], orders[i], isLeaderInDept[i]);
|
|
|
|
|
privilageCpUserDepartmentDOMapper.insert(relation);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 同步成员
|
|
|
|
|
*
|
|
|
|
@ -150,45 +196,18 @@ public class EmployeeService {
|
|
|
|
|
List<WxCpUser> wxCpUsers = qwMailListManageService.syncUser();
|
|
|
|
|
if (CollectionUtils.isNotEmpty(wxCpUsers)) {
|
|
|
|
|
wxCpUsers.forEach(wxCpUser -> {
|
|
|
|
|
QueryWrapper<PrivilageCpUserDO> cuUserIdParams = new QueryWrapper<>();
|
|
|
|
|
cuUserIdParams.eq(DATABASE_CP_USER_ID_KEY, wxCpUser.getUserId());
|
|
|
|
|
List<PrivilageCpUserDO> cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams);
|
|
|
|
|
|
|
|
|
|
PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO();
|
|
|
|
|
BeanUtils.copyProperties(wxCpUser, privilageCpUserDO);
|
|
|
|
|
privilageCpUserDO.setCpUserId(wxCpUser.getUserId());
|
|
|
|
|
String alias = privilageCpUserDO.getAlias();
|
|
|
|
|
alias = filterEmoji(alias);
|
|
|
|
|
privilageCpUserDO.setAlias(alias);
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(cuUserIdUser)) {
|
|
|
|
|
//添加用户
|
|
|
|
|
int insert = privilageCpUserDOMapper.insert(privilageCpUserDO);
|
|
|
|
|
} else {
|
|
|
|
|
privilageCpUserDO.setId(cuUserIdUser.get(0).getId());
|
|
|
|
|
//修改用户
|
|
|
|
|
int update = privilageCpUserDOMapper.updateById(privilageCpUserDO);
|
|
|
|
|
//维护部门关系——删除原有部门关系
|
|
|
|
|
QueryWrapper<PrivilageCpUserDepartmentDO> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(DATABASE_CP_USER_ID_KEY, cuUserIdUser.get(0).getId());
|
|
|
|
|
privilageCpUserDepartmentDOMapper.delete(queryWrapper);
|
|
|
|
|
try {
|
|
|
|
|
insertOrupdateUserFromNet(wxCpUser);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
Long[] departIds = wxCpUser.getDepartIds();
|
|
|
|
|
Integer[] orders = wxCpUser.getOrders();
|
|
|
|
|
Integer[] isLeaderInDept = wxCpUser.getIsLeaderInDept();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < departIds.length; i++) {
|
|
|
|
|
PrivilageCpUserDepartmentDO relation = new PrivilageCpUserDepartmentDO(privilageCpUserDO.getId(), departIds[i], orders[i], isLeaderInDept[i]);
|
|
|
|
|
privilageCpUserDepartmentDOMapper.insert(relation);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String filterEmoji(String source) {
|
|
|
|
|
if (source != null) {
|
|
|
|
|
Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
|
|
|
|
|
Pattern emoji = compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", UNICODE_CASE | CASE_INSENSITIVE);
|
|
|
|
|
Matcher emojiMatcher = emoji.matcher(source);
|
|
|
|
|
if (emojiMatcher.find()) {
|
|
|
|
|
source = emojiMatcher.replaceAll("*");
|
|
|
|
|