From 4a14b6679aa987b5c98cf0105f486e5c109941a9 Mon Sep 17 00:00:00 2001 From: LegnaYet <1023868505@qq.com> Date: Thu, 9 Apr 2020 14:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E3=80=81=E6=88=90=E5=91=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/PrivilageCpUserDepartmentDO.java | 47 ++++++++++++ .../PrivilageCpUserDepartmentDOMapper.java | 10 +++ .../department/service/DepartmentService.java | 6 +- .../controller/EmployeeController.java | 18 +++++ .../ic/employee/service/EmployeeService.java | 73 ++++++++++++++++--- .../wx/service/QWMailListManageService.java | 12 +++ 6 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/kiisoo/ic/department/entity/PrivilageCpUserDepartmentDO.java create mode 100644 src/main/java/com/kiisoo/ic/department/mapper/PrivilageCpUserDepartmentDOMapper.java diff --git a/src/main/java/com/kiisoo/ic/department/entity/PrivilageCpUserDepartmentDO.java b/src/main/java/com/kiisoo/ic/department/entity/PrivilageCpUserDepartmentDO.java new file mode 100644 index 0000000..9ad032d --- /dev/null +++ b/src/main/java/com/kiisoo/ic/department/entity/PrivilageCpUserDepartmentDO.java @@ -0,0 +1,47 @@ +package com.kiisoo.ic.department.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @Description: 成员-部门关系 + * @Auther: yechenhao + * @Date: 2020/4/7 0002 10:06 + * @Version: v1 + */ +@Data +@TableName("privilage_cp_user_department") +public class PrivilageCpUserDepartmentDO { + /** + * 主键id + */ + @TableId(type = IdType.AUTO) + private Long id; + /** + * privilage_cp_user 主键id 非企业微信userId + */ + private Long cpUserId; + /** + * 部门id + */ + private Long departmentId; + /** + * 部门内排序 + */ + private Integer order; + /** + * 是否主管 + */ + private Integer isLeader; + + public PrivilageCpUserDepartmentDO() {} + + public PrivilageCpUserDepartmentDO(Long cpUserId, Long departmentId, Integer order, Integer isLeader) { + this.cpUserId = cpUserId; + this.departmentId = departmentId; + this.order = order; + this.isLeader = isLeader; + } +} diff --git a/src/main/java/com/kiisoo/ic/department/mapper/PrivilageCpUserDepartmentDOMapper.java b/src/main/java/com/kiisoo/ic/department/mapper/PrivilageCpUserDepartmentDOMapper.java new file mode 100644 index 0000000..80b24bb --- /dev/null +++ b/src/main/java/com/kiisoo/ic/department/mapper/PrivilageCpUserDepartmentDOMapper.java @@ -0,0 +1,10 @@ +package com.kiisoo.ic.department.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kiisoo.ic.department.entity.PrivilageCpUserDepartmentDO; +import org.springframework.stereotype.Repository; + +@Repository +public interface PrivilageCpUserDepartmentDOMapper extends BaseMapper { + +} diff --git a/src/main/java/com/kiisoo/ic/department/service/DepartmentService.java b/src/main/java/com/kiisoo/ic/department/service/DepartmentService.java index 94244ea..2ef20bd 100644 --- a/src/main/java/com/kiisoo/ic/department/service/DepartmentService.java +++ b/src/main/java/com/kiisoo/ic/department/service/DepartmentService.java @@ -1,7 +1,9 @@ package com.kiisoo.ic.department.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.kiisoo.ic.department.entity.DepartmentDO; import com.kiisoo.ic.department.mapper.PrivilageDepartmentDOMapper; +import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; import com.kiisoo.ic.wx.service.QWMailListManageService; import lombok.Synchronized; import me.chanjar.weixin.common.error.WxErrorException; @@ -43,8 +45,8 @@ public class DepartmentService { @Transactional(rollbackFor = Exception.class) @Synchronized public List listDepartment() throws Exception { - Map params = new HashMap<>(); - List departmentDOS = departmentDOMapper.selectByMap(params); + QueryWrapper params = new QueryWrapper<>(); + List departmentDOS = departmentDOMapper.selectList(params); //转换为微信部门以使用递归分组 List wxCpDeparts = new ArrayList<>(); if (CollectionUtils.isNotEmpty(departmentDOS)){ diff --git a/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java b/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java index 39fe2c1..3766ec7 100644 --- a/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java +++ b/src/main/java/com/kiisoo/ic/employee/controller/EmployeeController.java @@ -45,6 +45,24 @@ public class EmployeeController extends BaseController { } } + /** + * 新增成员 + * @param employee 成员实体 + * @return + * @throws WxErrorException + */ + @RequestMapping(value = "sync",method = RequestMethod.GET) + @ResponseBody + public Map syncUser(){ + try { + employeeService.syncUser(); + return data(null); + }catch (Exception e){ + log.error("添加用户失败",e); + return fail(); + } + } + /** * 新增成员 * @param employee 成员实体 diff --git a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java index e78ef30..b90a288 100644 --- a/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java +++ b/src/main/java/com/kiisoo/ic/employee/service/EmployeeService.java @@ -1,11 +1,14 @@ package com.kiisoo.ic.employee.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.kiisoo.ic.department.entity.PrivilageCpUserDepartmentDO; +import com.kiisoo.ic.department.mapper.PrivilageCpUserDepartmentDOMapper; import com.kiisoo.ic.employee.entity.EmployeeDO; import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.wx.service.QWMailListManageService; import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.cp.bean.WxCpUser; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,16 +34,19 @@ public class EmployeeService { @Autowired private PrivilageCpUserDOMapper privilageCpUserDOMapper; + @Autowired + private PrivilageCpUserDepartmentDOMapper privilageCpUserDepartmentDOMapper; + /** - * 新增成员 + * 查询成员 * @param employee 成员实体 * @return * @throws WxErrorException */ @Transactional(rollbackFor = Exception.class) public List listUser() { - Map params = new HashMap<>(); - List privilageCpUserDOS = privilageCpUserDOMapper.selectByMap(params); + QueryWrapper params = new QueryWrapper<>(); + List privilageCpUserDOS = privilageCpUserDOMapper.selectList(params); return privilageCpUserDOS; } @@ -53,13 +59,13 @@ public class EmployeeService { @Transactional(rollbackFor = Exception.class) public Boolean addUser(EmployeeDO employee) throws Exception { //排重 - Map mobileParams = new HashMap<>(); - mobileParams.put("mobile",employee.getMobile()); - List mobileCpUser = privilageCpUserDOMapper.selectByMap(mobileParams); + QueryWrapper mobileParams = new QueryWrapper<>(); + mobileParams.eq("mobile",employee.getMobile()); + List mobileCpUser = privilageCpUserDOMapper.selectList(mobileParams); - Map cuUserIdParams = new HashMap<>(); - mobileParams.put("cpUserId",employee.getUserId()); - List cuUserIdUser = privilageCpUserDOMapper.selectByMap(cuUserIdParams); + QueryWrapper cuUserIdParams = new QueryWrapper<>(); + mobileParams.eq("cp_user_id",employee.getUserId()); + List cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams); if (CollectionUtils.isEmpty(mobileCpUser) && CollectionUtils.isEmpty(cuUserIdUser)){ PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO(); @@ -78,6 +84,55 @@ public class EmployeeService { return false; } + /** + * 同步成员 + * @param employee 成员实体 + * @return + * @throws WxErrorException + */ + @Transactional(rollbackFor = Exception.class) + public void syncUser() throws Exception { + List wxCpUsers = qwMailListManageService.syncUser(); + if (CollectionUtils.isNotEmpty(wxCpUsers)){ + wxCpUsers.forEach(wxCpUser -> { + //排重 + QueryWrapper mobileParams = new QueryWrapper<>(); + mobileParams.eq("mobile",wxCpUser.getMobile()); + List mobileCpUser = privilageCpUserDOMapper.selectList(mobileParams); + + QueryWrapper cuUserIdParams = new QueryWrapper<>(); + mobileParams.eq("cp_user_id",wxCpUser.getUserId()); + List cuUserIdUser = privilageCpUserDOMapper.selectList(cuUserIdParams); + + PrivilageCpUserDO privilageCpUserDO = new PrivilageCpUserDO(); + BeanUtils.copyProperties(wxCpUser,privilageCpUserDO); + privilageCpUserDO.setCpUserId(wxCpUser.getUserId()); + + if (CollectionUtils.isEmpty(mobileCpUser) && CollectionUtils.isEmpty(cuUserIdUser)){ + //添加用户 + int insert = privilageCpUserDOMapper.insert(privilageCpUserDO); + }else{ + privilageCpUserDO.setId(cuUserIdUser.get(0).getId()); + //修改用户 + int update = privilageCpUserDOMapper.updateById(privilageCpUserDO); + //维护部门关系——删除原有部门关系 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("cp_user_id",cuUserIdUser.get(0).getId()); + privilageCpUserDepartmentDOMapper.delete(queryWrapper); + } + Long[] departIds = wxCpUser.getDepartIds(); + Integer[] orders = wxCpUser.getOrders(); + Integer[] isLeaderInDept = wxCpUser.getIsLeaderInDept(); + + for (int i = 0;i syncUser() throws WxErrorException { + wxCpService = WxCpConfiguration.getCpService(applicationid); + WxCpUserService userService = wxCpService.getUserService(); + return userService.listByDepartment(MAIN_DEPARTMENT_ID,true,0); + } /** * 修改企业微信用户 */