| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package com.qqflow.engine.domain.ewechat.service;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.qqflow.engine.domain.ewechat.api.EnterpriseWechatApi;
- import com.qqflow.engine.domain.ewechat.mapper.EnterpriseWechatDepartmentMapper;
- import com.qqflow.engine.domain.ewechat.mapper.EnterpriseWechatMemberMapper;
- import com.qqflow.engine.domain.ewechat.model.enterprise.rsp.EnterpriseWechatUserListRsp;
- import com.qqflow.engine.domain.ewechat.po.EnterpriseWechatDepartment;
- import com.qqflow.engine.domain.ewechat.po.EnterpriseWechatMember;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 企微通讯录同步服务(懒加载:先查本地DB,没有再调企微接口同步后返回)
- */
- @Slf4j
- @Service
- @RequiredArgsConstructor
- public class WecomContactSyncService {
- private final EnterpriseWechatDepartmentMapper departmentMapper;
- private final EnterpriseWechatMemberMapper memberMapper;
- private final EnterpriseWechatApi enterpriseWechatApi;
- private final EnterpriseWechatMsgService wechatMsgService;
- /** 获取子部门列表(从本地DB查询) */
- public List<EnterpriseWechatDepartment> listSubDepartments(Long parentId) {
- return departmentMapper.selectList(
- new LambdaQueryWrapper<EnterpriseWechatDepartment>().eq(EnterpriseWechatDepartment::getParentId, parentId));
- }
- /** 获取部门成员(懒加载) */
- public List<EnterpriseWechatMember> listDepartmentMembers(Long departmentId) {
- List<EnterpriseWechatMember> cached = memberMapper.selectList(
- new LambdaQueryWrapper<EnterpriseWechatMember>().eq(EnterpriseWechatMember::getDepartmentId, departmentId));
- if (!cached.isEmpty()) return cached;
- String accessToken = wechatMsgService.getCorpAccessToken();
- if (accessToken == null) return List.of();
- EnterpriseWechatUserListRsp rsp = enterpriseWechatApi.listDepartmentUsers(accessToken, departmentId);
- if (rsp == null || rsp.getUserlist() == null) return List.of();
- List<EnterpriseWechatMember> members = new ArrayList<>();
- for (var u : rsp.getUserlist()) {
- EnterpriseWechatMember wm = new EnterpriseWechatMember();
- wm.setUserid(u.getUserid());
- wm.setName(u.getName() != null ? u.getName() : u.getUserid());
- wm.setDepartmentId(departmentId);
- wm.setOpenUserid(u.getOpenUserid());
- memberMapper.insert(wm);
- members.add(wm);
- }
- return members;
- }
- }
|