| | |
| | | import com.ruoyi.system.api.domain.poji.sys.SysDept; |
| | | import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; |
| | | import com.ruoyi.system.domain.pojo.staff.SysStaff; |
| | | import com.ruoyi.system.service.staff.SysStaffService; |
| | | import com.ruoyi.system.service.staff.SysWxCpService; |
| | |
| | | import me.chanjar.weixin.cp.api.WxCpDepartmentService; |
| | | import me.chanjar.weixin.cp.api.WxCpService; |
| | | import me.chanjar.weixin.cp.bean.WxCpDepart; |
| | | import me.chanjar.weixin.cp.bean.WxCpUser; |
| | | import me.chanjar.weixin.cp.bean.message.WxCpMessage; |
| | | import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | @Log4j2 |
| | | public class SysWxCpServiceImpl implements SysWxCpService { |
| | | |
| | | @Resource |
| | | @Autowired |
| | | @Qualifier("wxService") |
| | | private WxCpService wxCpService; |
| | | |
| | | @Autowired |
| | | @Qualifier("adWxService") |
| | | private WxCpService adWxCpService; |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | |
| | | |
| | | @Resource |
| | | private SysStaffService sysStaffService; |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 更新企业微信部门 |
| | | * @author jqs |
| | | * @date 2023/9/4 15:19 |
| | | * @param wxDeptId |
| | | * @param deptName |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void updateDept(){ |
| | | public void updateWxCpDept(Long wxDeptId,String deptName){ |
| | | WxCpDepart group = new WxCpDepart(); |
| | | group.setId(240L); |
| | | group.setName("软件开发测试部门"); |
| | | group.setId(wxDeptId); |
| | | group.setName(deptName); |
| | | try { |
| | | wxCpService.getDepartmentService().update(group); |
| | | adWxCpService.getDepartmentService().update(group); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 创建企业微信部门 |
| | | * @author jqs |
| | | * @date 2023/9/4 15:19 |
| | | * @param parentId |
| | | * @param deptName |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void sendMessage(){ |
| | | WxCpMessage message; |
| | | message = new WxCpMessage(); |
| | | message.setAgentId(1000024); |
| | | message.setToUser("jiangqiushi"); |
| | | message.setMsgType("text"); |
| | | message.setContent("今日需要任务跟进,请注意!"); |
| | | public Long addWxCpDept(Long parentId,String deptName){ |
| | | WxCpDepart depart = new WxCpDepart(); |
| | | depart.setParentId(parentId); |
| | | depart.setName(deptName); |
| | | Long departId = null; |
| | | try { |
| | | WxCpMessageSendResult result = wxCpService.getMessageService().send(message); |
| | | departId = adWxCpService.getDepartmentService().create(depart); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return departId; |
| | | } |
| | | |
| | | /** |
| | | * @description 删除企业微信部门 |
| | | * @author jqs |
| | | * @date 2023/9/4 15:19 |
| | | * @param wxDeptId |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void deleteWxCpDept(Long wxDeptId){ |
| | | try { |
| | | adWxCpService.getDepartmentService().delete(wxDeptId); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 通过手机号获取wxUserId |
| | | * @author jqs |
| | | * @date 2023/9/4 15:44 |
| | | * @param mobile |
| | | * @return String |
| | | */ |
| | | private String getWxUserIdByMobile(String mobile){ |
| | | String wxUserId = null; |
| | | try { |
| | | wxUserId = adWxCpService.getUserService().getUserId(mobile); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return wxUserId; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @description 通过wxUserId获取用户 |
| | | * @author jqs |
| | | * @date 2023/9/4 16:35 |
| | | * @param wxUserId |
| | | * @return WxCpUser |
| | | */ |
| | | private WxCpUser getWxCpUser(String wxUserId){ |
| | | WxCpUser wxCpUser = null; |
| | | try { |
| | | wxCpUser = adWxCpService.getUserService().getById(wxUserId); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return wxCpUser; |
| | | } |
| | | |
| | | /** |
| | | * @description 创建企业微信员工 |
| | | * @author jqs |
| | | * @date 2023/9/4 15:19 |
| | | * @param mgtWxCPStaffDto |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public String addWxCpStaff(MgtWxCPStaffDto mgtWxCPStaffDto){ |
| | | String wxUserId = mgtWxCPStaffDto.getWxUserId(); |
| | | String mobile = mgtWxCPStaffDto.getStaffMobile(); |
| | | String oldUserId = this.getWxUserIdByMobile(mobile); |
| | | WxCpUser oldWxCpUser = null; |
| | | Boolean sameUserId = false; |
| | | //判断手机号是否有对应企业微信用户 有则更新 无则新建 |
| | | if(StringUtils.isNotBlank(oldUserId)){ |
| | | oldWxCpUser = this.getWxCpUser(oldUserId); |
| | | }else{ |
| | | //当手机号无对应用户时判断wxUserId是否被占用 |
| | | oldWxCpUser = this.getWxCpUser(wxUserId); |
| | | if(oldWxCpUser!=null){ |
| | | sameUserId = true; |
| | | oldWxCpUser = null; |
| | | } |
| | | } |
| | | //获取企业微信用户是否存在 |
| | | if(oldWxCpUser!=null){ |
| | | oldWxCpUser.setUserId(mgtWxCPStaffDto.getWxUserId()); |
| | | oldWxCpUser.setName(mgtWxCPStaffDto.getStaffName()); |
| | | oldWxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile()); |
| | | if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){ |
| | | oldWxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail()); |
| | | } |
| | | if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){ |
| | | oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); |
| | | } |
| | | oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); |
| | | Long[] departIds = new Long[1]; |
| | | departIds[0] = mgtWxCPStaffDto.getWxDeptId(); |
| | | oldWxCpUser.setDepartIds(departIds); |
| | | if(mgtWxCPStaffDto.getHeadFlag()!=null){ |
| | | Integer[] isLeaderInDept = new Integer[1]; |
| | | isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag()); |
| | | oldWxCpUser.setIsLeaderInDept(isLeaderInDept); |
| | | } |
| | | try { |
| | | adWxCpService.getUserService().update(oldWxCpUser); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }else{ |
| | | WxCpUser wxCpUser = new WxCpUser(); |
| | | //wxUserId被占用重新生成 |
| | | if(sameUserId){ |
| | | wxUserId = wxUserId + "1"; |
| | | } |
| | | wxCpUser.setUserId(wxUserId); |
| | | wxCpUser.setName(mgtWxCPStaffDto.getStaffName()); |
| | | wxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile()); |
| | | if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){ |
| | | wxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail()); |
| | | } |
| | | if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){ |
| | | wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); |
| | | } |
| | | wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); |
| | | Long[] departIds = new Long[1]; |
| | | departIds[0] = mgtWxCPStaffDto.getWxDeptId(); |
| | | wxCpUser.setDepartIds(departIds); |
| | | if(mgtWxCPStaffDto.getHeadFlag()!=null){ |
| | | Integer[] isLeaderInDept = new Integer[1]; |
| | | isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag()); |
| | | wxCpUser.setIsLeaderInDept(isLeaderInDept); |
| | | } |
| | | try { |
| | | adWxCpService.getUserService().create(wxCpUser); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | return wxUserId; |
| | | } |
| | | |
| | | /** |
| | | * @description 删除企业微信员工 |
| | | * @author jqs |
| | | * @date 2023/9/4 15:19 |
| | | * @param wxUserId |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void deleteWxCpStaff(String wxUserId){ |
| | | try { |
| | | adWxCpService.getUserService().delete(wxUserId); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |