Commit a94d9250 by 墨竹

feat:企微同步通讯录处理部门

parent 24c5f1ea
...@@ -4,12 +4,12 @@ package com.gic.haoban.manage.api.enums; ...@@ -4,12 +4,12 @@ package com.gic.haoban.manage.api.enums;
* Created by tgs on 2020/2/20. * Created by tgs on 2020/2/20.
*/ */
public enum WxEditType { public enum WxEditType {
ADDDEPART("create_party", "创建部门"), ADD_DEPART("create_party", "创建部门"),
UPDATEDEPART("update_party", "更新部门"), UPDATE_DEPART("update_party", "更新部门"),
DELETEDEPART("delete_party", "删除部门"), DELETE_DEPART("delete_party", "删除部门"),
ADDUSER("create_user", "新增用户"), ADD_USER("create_user", "新增用户"),
UPDATEUSER("update_user", "更新用户"), UPDATE_USER("update_user", "更新用户"),
DELETEUSER("delete_user", "删除用户"); DELETE_USER("delete_user", "删除用户");
WxEditType(String type, String desc){ WxEditType(String type, String desc){
this.code = type; this.code = type;
......
package com.gic.haoban.manage.api.service; package com.gic.haoban.manage.api.service;
import java.util.List;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo; import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.DepartmentDTO; import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.dto.DepartmentShortDTO; import com.gic.haoban.manage.api.dto.DepartmentShortDTO;
import java.util.List;
public interface DepartmentApiService { public interface DepartmentApiService {
List<DepartmentDTO> listByParentId(String parentId); List<DepartmentDTO> listByParentId(String parentId);
...@@ -49,18 +49,21 @@ public interface DepartmentApiService { ...@@ -49,18 +49,21 @@ public interface DepartmentApiService {
* @param department * @param department
* @return * @return
*/ */
@Deprecated
ServiceResponse<DepartmentDTO> add(DepartmentDTO department); ServiceResponse<DepartmentDTO> add(DepartmentDTO department);
/** /**
* 修改部门 * 修改部门
* @param department * @param department
* @return * @return
*/ */
@Deprecated
ServiceResponse edit(DepartmentDTO department); ServiceResponse edit(DepartmentDTO department);
/** /**
* 删除部门 * 删除部门
* @param departmentId * @param departmentId
* @return * @return
*/ */
@Deprecated
ServiceResponse del(String departmentId); ServiceResponse del(String departmentId);
/** /**
* 根据关联id 获取部门 * 根据关联id 获取部门
......
...@@ -25,6 +25,7 @@ public interface StaffApiService { ...@@ -25,6 +25,7 @@ public interface StaffApiService {
Page<StaffDTO> pageStaff(List<String> departmentId, Integer activeFlag, String keyword, BasePageInfo pageInfo, Integer relationFlag); Page<StaffDTO> pageStaff(List<String> departmentId, Integer activeFlag, String keyword, BasePageInfo pageInfo, Integer relationFlag);
@Deprecated
void del(String staffDepartmentStaffRelatedId); void del(String staffDepartmentStaffRelatedId);
/** /**
......
...@@ -244,7 +244,6 @@ public class DepartmentApiServiceImpl implements DepartmentApiService { ...@@ -244,7 +244,6 @@ public class DepartmentApiServiceImpl implements DepartmentApiService {
return hr; return hr;
} }
} }
departmentService.del(departmentId); departmentService.del(departmentId);
return hr; return hr;
} }
...@@ -325,23 +324,20 @@ public class DepartmentApiServiceImpl implements DepartmentApiService { ...@@ -325,23 +324,20 @@ public class DepartmentApiServiceImpl implements DepartmentApiService {
public ServiceResponse wxCallBackrecycle(String departmentId) { public ServiceResponse wxCallBackrecycle(String departmentId) {
ServiceResponse hr = new ServiceResponse(); ServiceResponse hr = new ServiceResponse();
hr.setCode(1); hr.setCode(1);
List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId); List<TabHaobanDepartment> list = departmentService.listByParentId(departmentId);
logger.info("【部门删除】list.size={}", list.size()); logger.info("【部门删除】list.size={}", list.size());
if (!list.isEmpty()) { if (CollectionUtils.isNotEmpty(list)) {
hr.setCode(0); hr.setCode(0);
hr.setMessage("存在子部门,删除部门失败"); hr.setMessage("存在子部门,删除部门失败");
return hr; return hr;
} }
List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId); List<TabHaobanStaffDepartmentRelated> staffList = staffDepartmentService.listByDepartmentId(departmentId);
logger.info("【部门删除】staffList.size={}", staffList.size()); logger.info("【部门删除】staffList.size={}", staffList.size());
if (!staffList.isEmpty()) { if (CollectionUtils.isNotEmpty(staffList)) {
hr.setCode(0); hr.setCode(0);
hr.setMessage("存在成员,删除部门失败"); hr.setMessage("存在成员,删除部门失败");
return hr; return hr;
} }
departmentService.recycle(departmentId); departmentService.recycle(departmentId);
return hr; return hr;
} }
......
package com.gic.haoban.manage.service.service.out.impl; package com.gic.haoban.manage.service.service.out.impl;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkQwDTO; import com.gic.clerk.api.dto.ClerkQwDTO;
import com.gic.clerk.api.service.ClerkService; import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.*; import com.gic.commons.util.*;
import com.gic.haoban.app.customer.service.api.service.InnerApiService; import com.gic.haoban.app.customer.service.api.service.InnerApiService;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.Constant;
import com.gic.haoban.manage.api.dto.*; import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.AppPageType; import com.gic.haoban.manage.api.enums.AppPageType;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum; import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.enums.SecretTypeEnum; import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.enums.WxEditType; import com.gic.haoban.manage.api.enums.WxEditType;
import com.gic.haoban.manage.api.service.MessageApiService; import com.gic.haoban.manage.api.service.*;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.api.service.StaffDepartmentRelatedApiService;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil; import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
...@@ -84,7 +82,7 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -84,7 +82,7 @@ public class MessageApiServiceImpl implements MessageApiService {
@Autowired @Autowired
private SecretSettingService secretSettingService; private SecretSettingService secretSettingService;
@Autowired @Autowired
private WxApplicationService wxApplicationService; private DepartmentApiService departmentApiService;
@Override @Override
public void gicMessageReceive(GicMessageDTO gicMessageDTO) { public void gicMessageReceive(GicMessageDTO gicMessageDTO) {
...@@ -116,48 +114,10 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -116,48 +114,10 @@ public class MessageApiServiceImpl implements MessageApiService {
public void dealWxMessage(String param) { public void dealWxMessage(String param) {
QywxCallBackDTO dto = JSON.parseObject(param, QywxCallBackDTO.class); QywxCallBackDTO dto = JSON.parseObject(param, QywxCallBackDTO.class);
log.info("【成员同步回调处理】dto={}", JSON.toJSONString(param)); log.info("【成员同步回调处理】dto={}", JSON.toJSONString(param));
TabHaobanWxApplication wxApplication = wxApplicationService.selectByCorpId(dto.getAuthCorpId()); //处理成员
if (Objects.isNull(wxApplication)) {
log.info("通过corpId:【{}】未查询到授权企业,无法处理", dto.getAuthCorpId());
return;
}
String wxEnterpriseId = wxApplication.getWxEnterpriseId();
// 校验适用企业-定制
boolean suitWxEnterpriseIid = checkSuitEnterpriseId(wxEnterpriseId);
if (suitWxEnterpriseIid) {
log.info("成员同步定制化开始");
// 处理定制-目前鸿星尔克用
boolean checkErkeDeal = checkErkeDeal(dto);
if (!checkErkeDeal) {
log.info("不符合鸿星尔克需求,返回");
return;
}
log.info("微信企业id:{}, 不适用", wxEnterpriseId);
List<TabHaobanWxEnterpriseRelated> relatedList = wxEnterpriseRelatedService.getByWxEnterpriseId(wxEnterpriseId);
if (CollectionUtils.isEmpty(relatedList)) {
log.info("未查询到企业关联企业 wxEnt");
return;
}
ServiceResponse response = staffApiService.getWxSaveNew(dto.getUserid(), wxEnterpriseId);
if (response.getCode() != 1) {
log.info("添加企业员工失败:{}", response.getMessage());
return;
}
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.HAOBAN_HELP.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
log.info("没有配置secret:{}", JSONObject.toJSONString(wxApplication));
return;
}
// 这里将员工姓名改一下, 代开发返回的 id 和 name 一样
if (Objects.equals(dto.getUserid(), dto.getUserName())) {
dto.setUserName((String) response.getResult());
}
// 取第一个企业的id
doDealUser(dto, relatedList.get(0).getEnterpriseId(), secretSetting.getSecretVal());
log.info("成员同步定制化结束");
} else {
dealUser(dto); dealUser(dto);
} //处理部门
dealDepartment(dto);
} }
/** /**
...@@ -189,7 +149,14 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -189,7 +149,14 @@ public class MessageApiServiceImpl implements MessageApiService {
return wxSet.contains(wxEnterpriseId); return wxSet.contains(wxEnterpriseId);
} }
private void doDealUser(QywxCallBackDTO dto, String enterpriseId, String secret) { /**
* 处理同步导购(定制)
*
* @param dto
* @param enterpriseId
* @param secret
*/
private void dealClerkUser(QywxCallBackDTO dto, String enterpriseId, String secret) {
ClerkQwDTO clerkQwDTO = new ClerkQwDTO(); ClerkQwDTO clerkQwDTO = new ClerkQwDTO();
clerkQwDTO.setEnterpriseId(enterpriseId); clerkQwDTO.setEnterpriseId(enterpriseId);
String mainDeptId = dto.getMainDepartment(); String mainDeptId = dto.getMainDepartment();
...@@ -228,11 +195,17 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -228,11 +195,17 @@ public class MessageApiServiceImpl implements MessageApiService {
String wxEnterpriseId = enterprise.getWxEnterpriseId(); String wxEnterpriseId = enterprise.getWxEnterpriseId();
String changeType = qywxCallBackDTO.getChangeType(); String changeType = qywxCallBackDTO.getChangeType();
if (changeType.equals(WxEditType.ADDUSER.getCode())) { if (changeType.equals(WxEditType.ADD_USER.getCode())) {
log.info("成员同步新增,userid:{}", userid); log.info("成员同步新增,userid:{}", userid);
//新增 //新增
this.staffApiService.wxGetAdd(userid, wxEnterpriseId); this.staffApiService.wxGetAdd(userid, wxEnterpriseId);
} else if (changeType.equals(WxEditType.UPDATEUSER.getCode())) { // 校验适用企业-定制
boolean suitWxEnterpriseIid = checkSuitEnterpriseId(wxEnterpriseId);
if (suitWxEnterpriseIid) {
//鸿星尔克定制
dealErKe(qywxCallBackDTO, wxEnterpriseId);
}
} else if (changeType.equals(WxEditType.UPDATE_USER.getCode())) {
log.info("成员同步修改,userid:{}", userid); log.info("成员同步修改,userid:{}", userid);
//修改 //修改
TabHaobanStaff oldStaff = this.staffService.selectByUserIdAndEnterpriseId(userid, wxEnterpriseId); TabHaobanStaff oldStaff = this.staffService.selectByUserIdAndEnterpriseId(userid, wxEnterpriseId);
...@@ -279,7 +252,7 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -279,7 +252,7 @@ public class MessageApiServiceImpl implements MessageApiService {
} }
StaffDTO staffDTO = EntityUtil.changeEntityByJSON(StaffDTO.class, staff); StaffDTO staffDTO = EntityUtil.changeEntityByJSON(StaffDTO.class, staff);
staffApiService.staffEdit(staffDTO, departmentIds.toString()); staffApiService.staffEdit(staffDTO, departmentIds.toString());
} else if (changeType.equals(WxEditType.DELETEUSER.getCode())) { } else if (changeType.equals(WxEditType.DELETE_USER.getCode())) {
log.info("成员同步删除,userid:{}", userid); log.info("成员同步删除,userid:{}", userid);
//删除 //删除
TabHaobanStaff oldStaff = this.staffService.selectByUserIdAndEnterpriseId(userid, wxEnterpriseId); TabHaobanStaff oldStaff = this.staffService.selectByUserIdAndEnterpriseId(userid, wxEnterpriseId);
...@@ -293,12 +266,118 @@ public class MessageApiServiceImpl implements MessageApiService { ...@@ -293,12 +266,118 @@ public class MessageApiServiceImpl implements MessageApiService {
this.staffDepartmentRelatedService.delByUserid(userid); this.staffDepartmentRelatedService.delByUserid(userid);
//删除员工表 //删除员工表
this.staffService.delByStaffId(oldStaff.getStaffId()); this.staffService.delByStaffId(oldStaff.getStaffId());
} else {
log.error("成员同步类型错误,changeType:{}", changeType);
} }
log.error("成员同步结束"); log.error("成员同步结束");
} }
/**
* 处理部门
*
* @param qywxCallBackDTO
*/
private void dealDepartment(QywxCallBackDTO qywxCallBackDTO) {
log.info("处理部门:{}", qywxCallBackDTO);
DepartmentDTO departmentDTO = new DepartmentDTO();
departmentDTO.setDepartmentName(qywxCallBackDTO.getDepartmentName());
departmentDTO.setIsStore(0);
TabHaobanWxEnterprise enterprise = this.enterpriseService.getEnterpriseBycorpId(qywxCallBackDTO.getAuthCorpId());
TabHaobanDepartment parentDepartment = new TabHaobanDepartment();
if (qywxCallBackDTO.getParentId() != null) {
parentDepartment = this.departmentService.getByWxId(qywxCallBackDTO.getParentId() + "", enterprise.getWxEnterpriseId());
} else {
TabHaobanDepartment oldDepartment = this.departmentService.getByWxId(qywxCallBackDTO.getId() + "", enterprise.getWxEnterpriseId());
if (oldDepartment != null) {
parentDepartment = departmentService.selectById(oldDepartment.getParentDepartmentId());
}
}
String changeType = qywxCallBackDTO.getChangeType();
if (!changeType.equals(WxEditType.DELETE_DEPART.getCode())) {
if (parentDepartment == null) {
log.info("微信同步父部门不存在");
return;
}
departmentDTO.setParentDepartmentId(parentDepartment.getDepartmentId());
departmentDTO.setChainId(parentDepartment.getChainId() + Constant.ID_SEPARATOR + parentDepartment.getDepartmentId());
departmentDTO.setChainName(parentDepartment.getChainName() + Constant.NAME_SEPARATOR + parentDepartment.getChainName());
departmentDTO.setLevel(parentDepartment.getLevel() + 1);
}
departmentDTO.setWxEnterpriseId(enterprise.getWxEnterpriseId());
departmentDTO.setWxDepartmentId(qywxCallBackDTO.getId() + "");
if (qywxCallBackDTO.getParentId() != null) {
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = this.qywxDepartmentApiService.listDepartment(qywxCallBackDTO.getAuthCorpId(), qywxCallBackDTO.getSuiteId(), qywxCallBackDTO.getParentId());
if (list != null) {
for (com.gic.wechat.api.dto.qywx.DepartmentDTO wxDepartmentDTO : list) {
if (Convert.toStr(wxDepartmentDTO.getId()).equals(departmentDTO.getDepartmentId())) {
departmentDTO.setSort(qywxCallBackDTO.getOrder());
} else {
TabHaobanDepartment tab = this.departmentService.getByWxId(wxDepartmentDTO.getId() + "", enterprise.getWxEnterpriseId());
if (tab != null) {
tab.setSort(wxDepartmentDTO.getOrder());
this.departmentService.edit(EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab));
}
}
}
}
}
if (changeType.equals(WxEditType.ADD_DEPART.getCode())) {
log.info("企微新增部门同步");
this.departmentService.add(departmentDTO);
} else if (changeType.equals(WxEditType.UPDATE_DEPART.getCode())) {
log.info("企微修改部门同步");
TabHaobanDepartment department = this.departmentService.getByWxId(qywxCallBackDTO.getId() + "", enterprise.getWxEnterpriseId());
if (department == null) {
String response = this.departmentService.add(departmentDTO);
log.info("企微同步新增部门:{}", JSON.toJSONString(response));
} else {
departmentDTO.setIsStore(department.getIsStore());
departmentDTO.setDepartmentId(department.getDepartmentId());
this.departmentService.edit(departmentDTO);
log.info("企微修改部门同步完成");
}
} else if (changeType.equals(WxEditType.DELETE_DEPART.getCode())) {
log.info("企微删除部门同步");
TabHaobanDepartment department = this.departmentService.getByWxId(qywxCallBackDTO.getId() + "", enterprise.getWxEnterpriseId());
if (department == null) {
log.info("企微同步删除部门不存在");
} else {
if (StringUtils.isBlank(department.getRelatedId())) {
this.departmentService.del(department.getDepartmentId());
} else {
this.departmentApiService.wxCallBackrecycle(department.getDepartmentId());
}
log.info("企微删除同步完成");
}
}
}
/**
* 处理鸿星尔克定制需求
*
* @param qywxCallBackDTO
* @param wxEnterpriseId
*/
private void dealErKe(QywxCallBackDTO qywxCallBackDTO, String wxEnterpriseId) {
log.info("成员同步定制化开始");
// 处理定制-目前鸿星尔克用
boolean checkErkeDeal = checkErkeDeal(qywxCallBackDTO);
if (!checkErkeDeal) {
log.info("不符合鸿星尔克需求,返回");
return;
}
List<TabHaobanWxEnterpriseRelated> relatedList = wxEnterpriseRelatedService.getByWxEnterpriseId(wxEnterpriseId);
if (CollectionUtils.isEmpty(relatedList)) {
log.info("未查询到企业关联企业 wxEnt");
return;
}
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.HAOBAN_HELP.getVal());
if (null == secretSetting || secretSetting.getCheckFlag() == 0) {
log.info("没有配置secret:{}", wxEnterpriseId);
return;
}
dealClerkUser(qywxCallBackDTO, relatedList.get(0).getEnterpriseId(), secretSetting.getSecretVal());
log.info("成员同步定制化结束");
}
private String changeHeaderImageUrl(String headImgUrl) { private String changeHeaderImageUrl(String headImgUrl) {
try { try {
log.info("图片headImgUrl:{}", headImgUrl); log.info("图片headImgUrl:{}", headImgUrl);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment