yangys
2024-04-01 a36d93e531c292240dc59cb8e712b2eca21a4066
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/impl/WechatSyncServiceImpl.java
@@ -1,21 +1,6 @@
package com.qianwen.smartman.modules.sync.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jeecg.qywx.api.department.vo.Department;
import java.io.File;
import java.lang.invoke.SerializedLambda;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -27,18 +12,27 @@
import java.util.StringJoiner;
import java.util.concurrent.Callable;
import java.util.stream.Collectors;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.qianwen.smartman.common.cache.RegionCache;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jeecg.qywx.api.department.vo.Department;
import com.qianwen.core.log.exception.ServiceException;
import com.qianwen.core.redis.cache.BladeRedis;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.common.constant.CommonConstant;
import com.qianwen.smartman.common.constant.DateConstant;
import com.qianwen.smartman.common.enums.CommonGroupTypeEnum;
import com.qianwen.smartman.common.utils.MessageUtils;
import com.qianwen.core.log.exception.ServiceException;
import com.qianwen.core.redis.cache.BladeRedis;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.modules.cps.entity.CommonGroup;
import com.qianwen.smartman.modules.cps.entity.CommonGroupOfItem;
import com.qianwen.smartman.modules.cps.entity.Employee;
@@ -69,12 +63,16 @@
import com.qianwen.smartman.modules.system.service.IParamService;
import com.qianwen.smartman.modules.system.service.IPostService;
import com.qianwen.smartman.modules.system.service.IUserOauthService;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
@Service
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/sync/service/impl/WechatSyncServiceImpl.class */
@@ -95,131 +93,12 @@
    private final BladeRedis bladeRedis;
    private final IParamService paramService;
    private List<Department> departments;
    private final Map<WechatResponseEnum, QyWechatSync> syncMethod = new HashMap();
    private final Map<WechatResponseEnum, QyWechatSync> syncMethod = new HashMap<>();
    /* JADX INFO: Access modifiers changed from: package-private */
    @FunctionalInterface
    /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/sync/service/impl/WechatSyncServiceImpl$QyWechatSync.class */
    public interface QyWechatSync {
    interface QyWechatSync {
        void sync() throws Exception;
    }
    private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
        String implMethodName = lambda.getImplMethodName();
        boolean z = true;
        switch (implMethodName.hashCode()) {
            case -1249349403:
                if (implMethodName.equals("getTel")) {
                    z = true;
                    break;
                }
                break;
            case -75080655:
                if (implMethodName.equals("getUuid")) {
                    z = true;
                    break;
                }
                break;
            case 98245393:
                if (implMethodName.equals("getId")) {
                    z = true;
                    break;
                }
                break;
            case 242925765:
                if (implMethodName.equals("getAppType")) {
                    z = true;
                    break;
                }
                break;
            case 799509265:
                if (implMethodName.equals("getSource")) {
                    z = false;
                    break;
                }
                break;
            case 1722789684:
                if (implMethodName.equals("getLastSyncTime")) {
                    z = true;
                    break;
                }
                break;
        }
        switch (z) {
            case false:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/UserOauth") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getSource();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/UserOauth") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getSource();
                    };
                }
                break;
            case true:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/UserOauth") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getUuid();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/UserOauth") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getUuid();
                    };
                }
                break;
            case true:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
                    return (v0) -> {
                        return v0.getId();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
                    return (v0) -> {
                        return v0.getId();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
                    return (v0) -> {
                        return v0.getId();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
                    return (v0) -> {
                        return v0.getId();
                    };
                }
                break;
            case true:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/sync/entity/OuterAppConfig") && lambda.getImplMethodSignature().equals("()Ljava/util/Date;")) {
                    return (v0) -> {
                        return v0.getLastSyncTime();
                    };
                }
                break;
            case true:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/cps/entity/Employee") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getTel();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/cps/entity/Employee") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getTel();
                    };
                }
                break;
            case RegionCache.VILLAGE_LEVEL /* 5 */:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/sync/entity/OuterAppConfig") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
                    return (v0) -> {
                        return v0.getAppType();
                    };
                }
                break;
        }
        throw new IllegalArgumentException("Invalid lambda deserialization");
    }
    public WechatSyncServiceImpl(final IPostService iPostService, final PostMapper postMapper, final ICommonGroupService commonGroupService, final ICommonGroupOfItemService commonGroupOfItemService, final IEmployeeService iEmployeeService, final IUserOauthService userOauthService, final CommonGroupMapper commonGroupMapper, final IEmployeePostService employeePostService, final DataSourceTransactionManager dataSourceTransactionManager, final RocketMQTemplate rocketMQTemplate, final OuterAppConfigServiceImpl outerAppConfigService, final SseEmitterServer sseEmitterServer, final BladeRedis bladeRedis, final IParamService paramService, final List<Department> departments) {
@@ -272,11 +151,15 @@
            try {
                Boolean isExecSuccess = execSync();
                if (isExecSuccess.booleanValue()) {
                   this.outerAppConfigService.update(Wrappers.<OuterAppConfig>lambdaUpdate()
                         .eq(OuterAppConfig::getAppType, OuterAppConfigConstant.QY_WECHAT)
                         .set(OuterAppConfig::getLastSyncTime, new Date()));
                   /*
                    this.outerAppConfigService.update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> {
                        return v0.getAppType();
                    }, OuterAppConfigConstant.QY_WECHAT)).set((v0) -> {
                        return v0.getLastSyncTime();
                    }, new Date()));
                    }, new Date()));*/
                    this.dataSourceTransactionManager.commit(transStatus);
                    log.info("[企业微信同步组织架构].[syncOrganization success consuming={}秒]", Long.valueOf(timer.intervalSecond()));
                } else {
@@ -310,20 +193,22 @@
            return;
        }
        List<UserOauth> oauthList = getUserOauthByUuid(userList);
        Map<String, UserOauth> oauthMap = (Map) oauthList.parallelStream().collect(Collectors.toMap((v0) -> {
        Map<String, UserOauth> oauthMap = oauthList.parallelStream().collect(Collectors.toMap((v0) -> {
            return v0.getUuid();
        }, user -> {
            return user;
        }, old, newVal -> {
        }, (old, newVal) -> {
            return old;
        }));
        initEmpData(oauthList);
        List<Long> empIds = (List) oauthList.stream().map((v0) -> {
        List<Long> empIds = oauthList.stream().map((v0) -> {
            return v0.getUserId();
        }).collect(Collectors.toList());
        List<Employee> employeeList = this.iEmployeeService.list(Wrappers.<Employee>lambdaQuery().in(CollectionUtil.isNotEmpty(empIds), Employee::getId, empIds));
        /*
        List<Employee> employeeList = this.iEmployeeService.list(Wrappers.lambdaQuery().in(CollectionUtil.isNotEmpty(empIds), (v0) -> {
            return v0.getId();
        }, empIds));
        }, empIds));*/
        Map<String, Employee> syncEmp = convertEmpToMap(oauthList, employeeList);
        List<UserOauth> userOauthList = new ArrayList<>();
        userList.forEach(userDept -> {
@@ -355,15 +240,19 @@
            this.iEmployeeService.remove(null);
            return;
        }
        List<Long> empIds = userOauthList.stream().map(UserOauth::getUserId).filter(Objects::nonNull).collect(Collectors.toList());
        /*
        List<Long> empIds = (List) userOauthList.stream().map((v0) -> {
            return v0.getUserId();
        }).filter((v0) -> {
            return Objects.nonNull(v0);
        }).collect(Collectors.toList());
        }).collect(Collectors.toList());*/
        if (CollectionUtil.isNotEmpty(empIds)) {
           this.iEmployeeService.remove(Wrappers.<Employee>lambdaQuery().notIn(Employee::getId, empIds));
           /*
            this.iEmployeeService.remove((Wrapper) Wrappers.lambdaQuery().notIn((v0) -> {
                return v0.getId();
            }, empIds));
            }, empIds));*/
        } else {
            this.iEmployeeService.remove(null);
        }
@@ -371,16 +260,19 @@
    private List<UserOauth> getUserOauthByUuid(List<QyUser> qyUsers) {
        if (CollectionUtil.isEmpty(qyUsers)) {
            return new ArrayList();
            return new ArrayList<>();
        }
        List<String> qyUserIds = (List) qyUsers.stream().map((v0) -> {
        List<String> qyUserIds = qyUsers.stream().map((v0) -> {
            return v0.getUserid();
        }).collect(Collectors.toList());
        return this.userOauthService.list(Wrappers.<UserOauth>lambdaQuery().eq(UserOauth::getSource, QyWechatConstant.QY_SOURCE).in(UserOauth::getUuid, qyUserIds));
        /*
        return this.userOauthService.list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getSource();
        }, QyWechatConstant.QY_SOURCE)).in((v0) -> {
            return v0.getUuid();
        }, qyUserIds));
        }, qyUserIds));*/
    }
    private Map<String, Employee> convertEmpToMap(List<UserOauth> userOauthList, List<Employee> employees) {
@@ -388,11 +280,11 @@
        if (CollectionUtil.isEmpty(userOauthList) || CollectionUtil.isEmpty(employees)) {
            return result;
        }
        Map<Long, UserOauth> oauthMap = (Map) userOauthList.stream().collect(Collectors.toMap((v0) -> {
        Map<Long, UserOauth> oauthMap = userOauthList.stream().collect(Collectors.toMap((v0) -> {
            return v0.getUserId();
        }, ua -> {
            return ua;
        }, old, newVal -> {
        }, (old, newVal) -> {
            return old;
        }));
        for (Employee employee : employees) {
@@ -408,7 +300,7 @@
        List<CommonGroupOfItem> commonGroupOfItems = new ArrayList<>();
        List<EmployeePost> employeePosts = new ArrayList<>();
        Map<String, StringJoiner> userTagMap = QyWechatApi.getUserTagMap();
        employeeMap.forEach(userId, employee -> {
        employeeMap.forEach((userId, employee) -> {
            CommonGroupOfItem commonGroupOfItem = setItem(employee.getId(), Long.valueOf(employee.getOrganizationId()));
            commonGroupOfItems.add(commonGroupOfItem);
            employeePosts.addAll(employeePosts(employee, userId, userTagMap));
@@ -429,7 +321,7 @@
        });
        List<QyUser> userList = ThreadPoolUtil.createTaskList(taskList);
        HashSet<QyUser> result = new HashSet<>(userList);
        return new ArrayList(result);
        return new ArrayList<>(result);
    }
    @Override // org.springblade.modules.sync.service.IWechatSyncService
@@ -621,20 +513,24 @@
    @Transactional
    public void singleUserBind(QyUser user, Long empId, String clientId) {
       UserOauth userOauth = this.userOauthService.getOne(Wrappers.<UserOauth>lambdaQuery().eq(UserOauth::getUuid, user.getUserid()).eq(UserOauth::getSource, QyWechatConstant.QY_SOURCE), Boolean.TRUE.booleanValue());
       /*
        UserOauth userOauth = (UserOauth) this.userOauthService.getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getUuid();
        }, user.getUserid())).eq((v0) -> {
            return v0.getSource();
        }, QyWechatConstant.QY_SOURCE), Boolean.TRUE.booleanValue());
        }, QyWechatConstant.QY_SOURCE), Boolean.TRUE.booleanValue());*/
        if (Objects.isNull(userOauth)) {
            this.sseEmitterServer.sendMsg(clientId, MessageUtils.message("sys.outer.user.not.exist", new Object[0]), SseEventEnum.ERROR_MSG_ID.getEventId());
            throw new ServiceException(MessageUtils.message("sys.outer.user.not.exist", new Object[0]));
        }
        Employee employee = this.iEmployeeService.getOne(Wrappers.<Employee>lambdaQuery().eq(Employee::getTel, user.getMobile()).eq(Employee::getId, empId));
        /*
        Employee employee = (Employee) this.iEmployeeService.getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getTel();
        }, user.getMobile())).eq((v0) -> {
            return v0.getId();
        }, empId));
        }, empId));*/
        if (Objects.isNull(employee)) {
            this.sseEmitterServer.sendMsg(clientId, MessageUtils.message("cps.employee.outer.app.not.have.mobile", new Object[0]), SseEventEnum.ERROR_MSG_ID.getEventId());
            throw new ServiceException(MessageUtils.message("cps.employee.outer.app.not.have.mobile", new Object[0]));
@@ -654,14 +550,18 @@
    public Employee createOrModifyEmployee(QyUser qyUser, UserOauth userOauth) {
        Employee employee = null;
        if (!Objects.isNull(userOauth)) {
           employee = this.iEmployeeService.getOne(Wrappers.<Employee>lambdaQuery().eq(Employee::getId, userOauth.getUserId()));
           /*
            employee = (Employee) this.iEmployeeService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
                return v0.getId();
            }, userOauth.getUserId()));
            }, userOauth.getUserId()));*/
        }
        if (Objects.isNull(employee)) {
           employee = this.iEmployeeService.getOne(Wrappers.<Employee>lambdaQuery().eq(Employee::getTel, qyUser.getMobile()), true);
           /*
            employee = (Employee) this.iEmployeeService.getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
                return v0.getTel();
            }, qyUser.getMobile()), Boolean.TRUE.booleanValue());
            }, qyUser.getMobile()), Boolean.TRUE.booleanValue());*/
        }
        Employee employee2 = setEmpAttribute(qyUser, employee);
        this.iEmployeeService.saveOrUpdate(employee2);
@@ -684,11 +584,11 @@
    private List<EmployeePost> employeePosts(Employee employee, String userId, Map<String, StringJoiner> userTagMap) {
        List<EmployeePost> result = new ArrayList<>();
        if (CollectionUtil.isEmpty(userTagMap)) {
            return new ArrayList();
            return new ArrayList<>();
        }
        StringJoiner postIdJoiner = userTagMap.get(userId);
        if (Objects.isNull(postIdJoiner)) {
            return new ArrayList();
            return new ArrayList<>();
        }
        employee.setPostId(postIdJoiner.toString());
        String[] postIds = postIdJoiner.toString().split(",");