Search in sources :

Example 1 with Response

use of com.jeecg.dingtalk.api.core.response.Response in project jeecg-boot by jeecgboot.

the class ThirdAppController method sendMessageTest.

/**
 * 发送消息测试
 *
 * @return
 */
@PostMapping("/sendMessageTest")
public Result sendMessageTest(@RequestBody JSONObject params, HttpServletRequest request) {
    /* 获取前台传递的参数 */
    // 第三方app的类型
    String app = params.getString("app");
    // 是否发送给全部人
    boolean sendAll = params.getBooleanValue("sendAll");
    // 消息接收者,传sys_user表的username字段,多个用逗号分割
    String receiver = params.getString("receiver");
    // 消息内容
    String content = params.getString("content");
    String fromUser = JwtUtil.getUserNameByToken(request);
    String title = "第三方APP消息测试";
    MessageDTO message = new MessageDTO(fromUser, receiver, title, content);
    message.setToAll(sendAll);
    if (ThirdAppConfig.WECHAT_ENTERPRISE.equals(app)) {
        if (thirdAppConfig.isWechatEnterpriseEnabled()) {
            JSONObject response = wechatEnterpriseService.sendMessageResponse(message, false);
            return Result.OK(response);
        }
        return Result.error("企业微信已被禁用");
    } else if (ThirdAppConfig.DINGTALK.equals(app)) {
        if (thirdAppConfig.isDingtalkEnabled()) {
            Response<String> response = dingtalkService.sendMessageResponse(message, false);
            return Result.OK(response);
        }
        return Result.error("钉钉已被禁用");
    }
    return Result.error("不识别的第三方APP");
}
Also used : Response(com.jeecg.dingtalk.api.core.response.Response) MessageDTO(org.jeecg.common.api.dto.message.MessageDTO) JSONObject(com.alibaba.fastjson.JSONObject)

Example 2 with Response

use of com.jeecg.dingtalk.api.core.response.Response in project jeecg-boot by jeecgboot.

the class ThirdAppDingtalkServiceImpl method syncDepartmentToLocalRecursion.

public void syncDepartmentToLocalRecursion(List<JdtDepartmentTreeVo> departmentTreeList, String sysParentId, String username, SyncInfoVo syncInfo, String accessToken) {
    if (departmentTreeList != null && departmentTreeList.size() != 0) {
        for (JdtDepartmentTreeVo departmentTree : departmentTreeList) {
            LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>();
            // 根据 source_identifier 字段查询
            queryWrapper.eq(SysDepart::getId, departmentTree.getSource_identifier());
            SysDepart sysDepart = sysDepartService.getOne(queryWrapper);
            if (sysDepart != null) {
                // 执行更新操作
                SysDepart updateSysDepart = this.dtDepartmentToSysDepart(departmentTree, sysDepart);
                if (sysParentId != null) {
                    updateSysDepart.setParentId(sysParentId);
                }
                try {
                    sysDepartService.updateDepartDataById(updateSysDepart, username);
                    String str = String.format("部门 %s 更新成功!", updateSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                if (departmentTree.hasChildren()) {
                    // 紧接着同步子级
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), updateSysDepart.getId(), username, syncInfo, accessToken);
                }
            } else {
                // 执行新增操作
                SysDepart newSysDepart = this.dtDepartmentToSysDepart(departmentTree, null);
                if (sysParentId != null) {
                    newSysDepart.setParentId(sysParentId);
                    // 2 = 组织机构
                    newSysDepart.setOrgCategory("2");
                } else {
                    // 1 = 公司
                    newSysDepart.setOrgCategory("1");
                }
                try {
                    sysDepartService.saveDepartData(newSysDepart, username);
                    // 更新钉钉 source_identifier
                    Department updateDtDepart = new Department();
                    updateDtDepart.setDept_id(departmentTree.getDept_id());
                    updateDtDepart.setSource_identifier(newSysDepart.getId());
                    Response response = JdtDepartmentAPI.update(updateDtDepart, accessToken);
                    if (!response.isSuccess()) {
                        throw new RuntimeException(response.getErrmsg());
                    }
                    String str = String.format("部门 %s 创建成功!", newSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                // 紧接着同步子级
                if (departmentTree.hasChildren()) {
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), newSysDepart.getId(), username, syncInfo, accessToken);
                }
            }
        }
    }
}
Also used : Response(com.jeecg.dingtalk.api.core.response.Response) Department(com.jeecg.dingtalk.api.department.vo.Department) JdtDepartmentTreeVo(org.jeecg.modules.system.vo.thirdapp.JdtDepartmentTreeVo) DuplicateKeyException(org.springframework.dao.DuplicateKeyException) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)

Example 3 with Response

use of com.jeecg.dingtalk.api.core.response.Response in project kykms by mahonelau.

the class ThirdAppDingtalkServiceImpl method syncDepartmentToLocalRecursion.

public void syncDepartmentToLocalRecursion(List<JdtDepartmentTreeVo> departmentTreeList, String sysParentId, String username, SyncInfoVo syncInfo, String accessToken) {
    if (departmentTreeList != null && departmentTreeList.size() != 0) {
        for (JdtDepartmentTreeVo departmentTree : departmentTreeList) {
            LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>();
            // 根据 source_identifier 字段查询
            queryWrapper.eq(SysDepart::getId, departmentTree.getSource_identifier());
            SysDepart sysDepart = sysDepartService.getOne(queryWrapper);
            if (sysDepart != null) {
                // 执行更新操作
                SysDepart updateSysDepart = this.dtDepartmentToSysDepart(departmentTree, sysDepart);
                if (sysParentId != null) {
                    updateSysDepart.setParentId(sysParentId);
                }
                try {
                    sysDepartService.updateDepartDataById(updateSysDepart, username);
                    String str = String.format("部门 %s 更新成功!", updateSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                if (departmentTree.hasChildren()) {
                    // 紧接着同步子级
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), updateSysDepart.getId(), username, syncInfo, accessToken);
                }
            } else {
                // 执行新增操作
                SysDepart newSysDepart = this.dtDepartmentToSysDepart(departmentTree, null);
                if (sysParentId != null) {
                    newSysDepart.setParentId(sysParentId);
                }
                try {
                    sysDepartService.saveDepartData(newSysDepart, username);
                    // 更新钉钉 source_identifier
                    Department updateDtDepart = new Department();
                    updateDtDepart.setDept_id(departmentTree.getDept_id());
                    updateDtDepart.setSource_identifier(newSysDepart.getId());
                    Response response = JdtDepartmentAPI.update(updateDtDepart, accessToken);
                    if (!response.isSuccess()) {
                        throw new RuntimeException(response.getErrmsg());
                    }
                    String str = String.format("部门 %s 创建成功!", newSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                // 紧接着同步子级
                if (departmentTree.hasChildren()) {
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), newSysDepart.getId(), username, syncInfo, accessToken);
                }
            }
        }
    }
}
Also used : Response(com.jeecg.dingtalk.api.core.response.Response) Department(com.jeecg.dingtalk.api.department.vo.Department) JdtDepartmentTreeVo(org.jeecg.modules.system.vo.thirdapp.JdtDepartmentTreeVo) DuplicateKeyException(org.springframework.dao.DuplicateKeyException) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)

Example 4 with Response

use of com.jeecg.dingtalk.api.core.response.Response in project kms by mahonelau.

the class ThirdAppDingtalkServiceImpl method syncDepartmentToLocalRecursion.

public void syncDepartmentToLocalRecursion(List<JdtDepartmentTreeVo> departmentTreeList, String sysParentId, String username, SyncInfoVo syncInfo, String accessToken) {
    if (departmentTreeList != null && departmentTreeList.size() != 0) {
        for (JdtDepartmentTreeVo departmentTree : departmentTreeList) {
            LambdaQueryWrapper<SysDepart> queryWrapper = new LambdaQueryWrapper<>();
            // 根据 source_identifier 字段查询
            queryWrapper.eq(SysDepart::getId, departmentTree.getSource_identifier());
            SysDepart sysDepart = sysDepartService.getOne(queryWrapper);
            if (sysDepart != null) {
                // 执行更新操作
                SysDepart updateSysDepart = this.dtDepartmentToSysDepart(departmentTree, sysDepart);
                if (sysParentId != null) {
                    updateSysDepart.setParentId(sysParentId);
                }
                try {
                    sysDepartService.updateDepartDataById(updateSysDepart, username);
                    String str = String.format("部门 %s 更新成功!", updateSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                if (departmentTree.hasChildren()) {
                    // 紧接着同步子级
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), updateSysDepart.getId(), username, syncInfo, accessToken);
                }
            } else {
                // 执行新增操作
                SysDepart newSysDepart = this.dtDepartmentToSysDepart(departmentTree, null);
                if (sysParentId != null) {
                    newSysDepart.setParentId(sysParentId);
                }
                try {
                    sysDepartService.saveDepartData(newSysDepart, username);
                    // 更新钉钉 source_identifier
                    Department updateDtDepart = new Department();
                    updateDtDepart.setDept_id(departmentTree.getDept_id());
                    updateDtDepart.setSource_identifier(newSysDepart.getId());
                    Response response = JdtDepartmentAPI.update(updateDtDepart, accessToken);
                    if (!response.isSuccess()) {
                        throw new RuntimeException(response.getErrmsg());
                    }
                    String str = String.format("部门 %s 创建成功!", newSysDepart.getDepartName());
                    syncInfo.addSuccessInfo(str);
                } catch (Exception e) {
                    this.syncDepartCollectErrInfo(e, departmentTree, syncInfo);
                }
                // 紧接着同步子级
                if (departmentTree.hasChildren()) {
                    this.syncDepartmentToLocalRecursion(departmentTree.getChildren(), newSysDepart.getId(), username, syncInfo, accessToken);
                }
            }
        }
    }
}
Also used : Response(com.jeecg.dingtalk.api.core.response.Response) Department(com.jeecg.dingtalk.api.department.vo.Department) JdtDepartmentTreeVo(org.jeecg.modules.system.vo.thirdapp.JdtDepartmentTreeVo) DuplicateKeyException(org.springframework.dao.DuplicateKeyException) LambdaQueryWrapper(com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)

Example 5 with Response

use of com.jeecg.dingtalk.api.core.response.Response in project kms by mahonelau.

the class ThirdAppDingtalkServiceImpl method syncLocalDepartmentToThirdApp.

@Override
public boolean syncLocalDepartmentToThirdApp(String ids) {
    String accessToken = this.getAccessToken();
    if (accessToken == null) {
        return false;
    }
    // 获取【钉钉】所有的部门
    List<Department> departments = JdtDepartmentAPI.listAll(accessToken);
    // 删除钉钉有但本地没有的部门(以本地部门数据为主)(钉钉不能创建同名部门,只能先删除)
    List<SysDepart> sysDepartList = sysDepartService.list();
    for1: for (Department department : departments) {
        for (SysDepart depart : sysDepartList) {
            // id相同,代表已存在,不删除
            String sourceIdentifier = department.getSource_identifier();
            if (sourceIdentifier != null && sourceIdentifier.equals(depart.getId())) {
                continue for1;
            }
        }
        // 循环到此说明本地没有,删除
        int deptId = department.getDept_id();
        // 钉钉不允许删除带有用户的部门,所以需要判断下,将有用户的部门的用户移动至根部门
        Response<List<String>> userIdRes = JdtUserAPI.getUserListIdByDeptId(deptId, accessToken);
        if (userIdRes.isSuccess() && userIdRes.getResult().size() > 0) {
            for (String userId : userIdRes.getResult()) {
                User updateUser = new User();
                updateUser.setUserid(userId);
                updateUser.setDept_id_list(1);
                JdtUserAPI.update(updateUser, accessToken);
            }
        }
        JdtDepartmentAPI.delete(deptId, accessToken);
    }
    // 获取本地所有部门树结构
    List<SysDepartTreeModel> sysDepartsTree = sysDepartService.queryTreeList();
    // -- 钉钉不能创建新的顶级部门,所以新的顶级部门的parentId就为1
    Department parent = new Department();
    parent.setDept_id(1);
    // 递归同步部门
    departments = JdtDepartmentAPI.listAll(accessToken);
    this.syncDepartmentRecursion(sysDepartsTree, departments, parent, accessToken);
    return true;
}
Also used : Response(com.jeecg.dingtalk.api.core.response.Response) Department(com.jeecg.dingtalk.api.department.vo.Department) User(com.jeecg.dingtalk.api.user.vo.User) SysDepartTreeModel(org.jeecg.modules.system.model.SysDepartTreeModel)

Aggregations

Response (com.jeecg.dingtalk.api.core.response.Response)9 Department (com.jeecg.dingtalk.api.department.vo.Department)6 JSONObject (com.alibaba.fastjson.JSONObject)3 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)3 User (com.jeecg.dingtalk.api.user.vo.User)3 MessageDTO (org.jeecg.common.api.dto.message.MessageDTO)3 SysDepartTreeModel (org.jeecg.modules.system.model.SysDepartTreeModel)3 JdtDepartmentTreeVo (org.jeecg.modules.system.vo.thirdapp.JdtDepartmentTreeVo)3 DuplicateKeyException (org.springframework.dao.DuplicateKeyException)3 ContactUser (com.jeecg.dingtalk.api.oauth2.vo.ContactUser)1 SyncInfoVo (org.jeecg.modules.system.vo.thirdapp.SyncInfoVo)1