| | |
| | | import com.ruoyi.system.api.domain.dto.MerEditUserDto; |
| | | import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; |
| | | import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysDept; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysUser; |
| | | import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; |
| | | import com.ruoyi.system.api.service.RemoteShopService; |
| | | import com.ruoyi.system.domain.dto.MgtStaffEditDto; |
| | | import com.ruoyi.system.domain.dto.MgtStaffPageDto; |
| | | import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; |
| | | import com.ruoyi.system.domain.pojo.staff.SysStaff; |
| | | import com.ruoyi.system.api.domain.poji.sys.SysStaff; |
| | | import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; |
| | | import com.ruoyi.system.domain.vo.DeptSimpleVo; |
| | | import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; |
| | | import com.ruoyi.system.domain.vo.MgtStaffPageVo; |
| | | import com.ruoyi.system.mapper.staff.SysStaffMapper; |
| | | import com.ruoyi.system.service.staff.SysStaffService; |
| | | import com.ruoyi.system.service.staff.SysWxCpService; |
| | | import com.ruoyi.system.service.sys.ISysDeptService; |
| | | import com.ruoyi.system.service.sys.ISysUserService; |
| | | import com.ruoyi.system.util.QiYeUtils; |
| | | import me.chanjar.weixin.common.error.WxErrorException; |
| | | import me.chanjar.weixin.cp.api.WxCpService; |
| | | import me.chanjar.weixin.cp.bean.message.WxCpMessage; |
| | | import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | @Resource |
| | | private SysWxCpService sysWxCpService; |
| | | |
| | | @Resource |
| | | private ISysDeptService sysDeptService; |
| | | |
| | | @Resource |
| | | @Qualifier("wxService") |
| | | private WxCpService wxCpService; |
| | | |
| | | |
| | | /** |
| | | * @description 获取部门员工列表 |
| | |
| | | * @return List<MgtDeptStaffListVo> |
| | | */ |
| | | @Override |
| | | public List<MgtDeptStaffListVo> listMgtDeptStaff(){ |
| | | return sysStaffMapper.listMgtDeptStaff(); |
| | | public List<MgtDeptStaffListVo> listMgtDeptStaff(Long deptId,Long userId, String name){ |
| | | return sysStaffMapper.listMgtDeptStaff(deptId,userId, name); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId){ |
| | | SysUser sysUser = sysUserService.selectUserById(userId); |
| | | String dataScope = sysUser.getDataScope(); |
| | | List<MgtDeptStaffListVo> deptStaffListVoList; |
| | | if(dataScope!=null&&dataScope.equals("4")){ |
| | | deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null); |
| | | }else if(dataScope!=null&&dataScope.equals("5")){ |
| | | deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId()); |
| | | }else{ |
| | | deptStaffListVoList = sysStaffMapper.listMgtDeptStaff(); |
| | | // 获取当前登陆人的可视权限 |
| | | SysUser sysUser = sysUserService.selectUserById(userId); |
| | | // 如果当前登陆人权限是查看部门数据 |
| | | Long deptId = null; |
| | | // 如果当前登陆人是查看个人数据 |
| | | Long userId1 = null; |
| | | if (sysUser!=null){ |
| | | String dataScope = sysUser.getDataScope(); |
| | | if (!sysUser.getUserName().equals("admin")){ |
| | | if (org.springframework.util.StringUtils.hasLength(dataScope)){ |
| | | switch (dataScope){ |
| | | case "3": |
| | | // 本部门数据 查询当前登陆人属于哪个部门 查询这个部门下所有员工关联的所有店铺 |
| | | deptId = sysUser.getDeptId(); |
| | | break; |
| | | case "5": |
| | | // 仅个人数据 查询当前登陆人关联店铺下的用户 |
| | | userId1 = sysUser.getUserId(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | deptStaffListVoList = sysStaffMapper.listMgtDeptStaff(deptId,userId1, null); |
| | | return deptStaffListVoList; |
| | | } |
| | | |
| | |
| | | queryWrapper.eq(SysStaff::getDelFlag,0); |
| | | queryWrapper.eq(SysStaff::getStaffMobile,mgtStaffEditDto.getStaffMobile()); |
| | | SysStaff sysStaffSame = this.getOne(queryWrapper, false); |
| | | SysDept sysDept = sysDeptService.selectDeptById(mgtStaffEditDto.getDeptId()); |
| | | if(StringUtils.isBlank(mgtStaffEditDto.getStaffAvatar())){ |
| | | mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); |
| | | } |
| | |
| | | sysStaff.setStaffPost(mgtStaffEditDto.getStaffPost()); |
| | | sysStaff.setStaffAvatar(mgtStaffEditDto.getStaffAvatar()); |
| | | sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag()); |
| | | sysStaff.setWxUserId(mgtStaffEditDto.getWxUserId()); |
| | | this.saveOrUpdate(sysStaff); |
| | | //同步修改商户员工信息 |
| | | MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto(); |
| | | mgtShopStaffEditDto.setUserId(sysStaff.getUserId()); |
| | | mgtShopStaffEditDto.setStaffName(sysStaff.getStaffName()); |
| | | mgtShopStaffEditDto.setStaffMobile(sysStaff.getStaffMobile()); |
| | | mgtShopStaffEditDto.setStaffAvatar(sysStaff.getStaffAvatar()); |
| | | remoteShopService.editMgtShopStaff(mgtShopStaffEditDto); |
| | | //如果wxUserId和wxDeptId不为空 同步到企业微信 |
| | | if(sysStaff.getWxUserId()!=null&&sysDept.getWxDeptId()!=null){ |
| | | log.debug("同步员工到企业微信:"+mgtStaffEditDto.getStaffName()); |
| | | MgtWxCPStaffDto mgtWxCPStaffDto = new MgtWxCPStaffDto(); |
| | | mgtWxCPStaffDto.setWxDeptId(sysDept.getWxDeptId()); |
| | | mgtWxCPStaffDto.setWxUserId(mgtStaffEditDto.getWxUserId()); |
| | | mgtWxCPStaffDto.setStaffName(mgtStaffEditDto.getStaffName()); |
| | | mgtWxCPStaffDto.setStaffMobile(mgtStaffEditDto.getStaffMobile()); |
| | | mgtWxCPStaffDto.setStaffPost(mgtStaffEditDto.getStaffPost()); |
| | | mgtWxCPStaffDto.setStaffEmail(mgtStaffEditDto.getStaffEmail()); |
| | | mgtWxCPStaffDto.setHeadFlag(mgtStaffEditDto.getHeadFlag()); |
| | | sysWxCpService.addWxCpStaff(mgtWxCPStaffDto); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | StringBuilder failureMsg = new StringBuilder(); |
| | | SysStaff sysStaff; |
| | | Date nowTime = new Date(); |
| | | String mobile; |
| | | String userName; |
| | | String department; |
| | | String departmentFirst; |
| | | String departmentSecond; |
| | | String departmentThird; |
| | | int lastIndex; |
| | | int firstIndex; |
| | | int secondIndex; |
| | | int thirdIndex; |
| | | DeptSimpleVo deptSimpleVo; |
| | | SysUser sysUser; |
| | | List<DeptSimpleVo> deptSimpleVoList = sysStaffMapper.listSimpleDept(); |
| | | Map<String, DeptSimpleVo> deptMap = deptSimpleVoList.stream() |
| | | .collect(Collectors.toMap(DeptSimpleVo::getDeptName, Function.identity())); |
| | | for (MgtSysStaffImportDto entity : staffImportDtoList) { |
| | | try { |
| | | /*tagName = entity.getTagName(); |
| | | sysTagSame = null; |
| | | // 验证是否存在这个用户 |
| | | queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 |
| | | .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性 |
| | | .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性 |
| | | // 执行查询,获取与查询条件匹配的SysTag对象 |
| | | sysTagSame = this.getOne(queryWrapper); |
| | | if (sysTagSame == null) { |
| | | sysTagNew = new SysTag(); |
| | | sysTagNew.setDelFlag(0); |
| | | sysTagNew.setTagType(tagType); |
| | | sysTagNew.setTagName(tagName); |
| | | sysTagNew.setCreateTime(nowTime); |
| | | sysTagNew.setSynFlag(0); |
| | | this.save(sysTagNew); |
| | | successNum++; |
| | | successMsg.append("<br/>" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功"); |
| | | } else { |
| | | failureNum++; |
| | | failureMsg.append("<br/>" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在"); |
| | | }*/ |
| | | if(StringUtils.isNotBlank(entity.getMobile())){ |
| | | if(StringUtils.isNotBlank(entity.getUserStatus())&&entity.getUserStatus().equals("禁用")){ |
| | | continue; |
| | | } |
| | | department = entity.getDepartment(); |
| | | lastIndex = department.indexOf(";"); |
| | | department = (lastIndex != -1) ? department.substring(0, lastIndex) : department; |
| | | firstIndex = department.lastIndexOf("/"); |
| | | secondIndex = department.lastIndexOf('/', firstIndex - 1); |
| | | thirdIndex = department.lastIndexOf('/', secondIndex - 1); |
| | | departmentFirst = department.substring(firstIndex + 1); |
| | | deptSimpleVo = deptMap.get(departmentFirst); |
| | | if(deptSimpleVo==null){ |
| | | departmentSecond = department.substring(secondIndex + 1, firstIndex); |
| | | deptSimpleVo = deptMap.get(departmentSecond); |
| | | } |
| | | if(deptSimpleVo==null){ |
| | | departmentThird = department.substring(thirdIndex + 1, secondIndex); |
| | | deptSimpleVo = deptMap.get(departmentThird); |
| | | } |
| | | if(deptSimpleVo!=null&&StringUtils.isNotBlank(entity.getMobile())){ |
| | | LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper(); |
| | | queryWrapper.eq(SysStaff::getDelFlag,0); |
| | | queryWrapper.eq(SysStaff::getStaffMobile,entity.getMobile()); |
| | | SysStaff sysStaffSame = this.getOne(queryWrapper, false); |
| | | if(sysStaffSame!=null){ |
| | | sysStaffSame.setStaffName(entity.getStaffName()); |
| | | sysStaffSame.setStaffPost(entity.getPost()); |
| | | sysStaffSame.setWxUserId(entity.getUserName()); |
| | | if(StringUtils.isNotBlank(entity.getEmail())){ |
| | | sysStaffSame.setStaffEmail(entity.getEmail()); |
| | | } |
| | | this.saveOrUpdate(sysStaffSame); |
| | | sysUser = sysUserService.selectUserById(sysStaffSame.getUserId()); |
| | | sysUser.setDeptId(deptSimpleVo.getDeptId()); |
| | | sysUser.setNickName(entity.getStaffName()); |
| | | if(entity.getGender().equals("男")){ |
| | | sysUser.setSex("0"); |
| | | }else if(entity.getGender().equals("女")){ |
| | | sysUser.setSex("1"); |
| | | }else{ |
| | | sysUser.setSex("2"); |
| | | } |
| | | if(StringUtils.isNotBlank(entity.getEmail())){ |
| | | sysUser.setEmail(entity.getEmail()); |
| | | } |
| | | sysUserService.updateOnlyUser(sysUser); |
| | | successNum = successNum + 1; |
| | | }else{ |
| | | MgtStaffEditDto mgtStaffEditDto = new MgtStaffEditDto(); |
| | | mgtStaffEditDto.setDeptId(deptSimpleVo.getDeptId()); |
| | | mgtStaffEditDto.setStaffName(entity.getStaffName()); |
| | | mgtStaffEditDto.setStaffMobile(entity.getMobile()); |
| | | mgtStaffEditDto.setStaffEmail(entity.getEmail()); |
| | | mgtStaffEditDto.setStaffPost(entity.getPost()); |
| | | mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/2023/8/26/362e964917304255aaa36a874063d198.jpg"); |
| | | mgtStaffEditDto.setHeadFlag("0"); |
| | | mgtStaffEditDto.setWxUserId(entity.getUserName()); |
| | | this.mgtStaffEdit(mgtStaffEditDto); |
| | | successNum = successNum + 1; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | failureNum++; |
| | | String msg = "<br/>" + failureNum + "、标签 " + entity.getStaffName() + " 导入失败:"; |
| | | String msg = "<br/>" + failureNum + "员工 " + entity.getStaffName() + " 导入失败:"; |
| | | failureMsg.append(msg + e.getMessage()); |
| | | log.error(msg, e); |
| | | } |
| | |
| | | } |
| | | return successMsg.toString(); |
| | | } |
| | | |
| | | /** |
| | | * @description 通过id获取员工列表 |
| | | * @author jqs |
| | | * @date 2023/9/5 10:02 |
| | | * @param userIdList |
| | | * @return List<SysStaff> |
| | | */ |
| | | @Override |
| | | public List<SysStaff> listSysStaffByIds(List<Long> userIdList){ |
| | | return sysStaffMapper.listSysStaffByIds(userIdList); |
| | | } |
| | | |
| | | /** |
| | | * @description 企业微信消息推送 |
| | | * @author jqs |
| | | * @date 2023/8/29 11:05 |
| | | * @return void |
| | | */ |
| | | @Override |
| | | public void sendTaskMessage(){ |
| | | //获取员工任务列表 |
| | | List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData(); |
| | | WxCpMessage message; |
| | | SysStaff sysStaff; |
| | | if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){ |
| | | //循环发送消息 |
| | | for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){ |
| | | sysStaff = this.getByUserId(mgtUserTaskMsgVo.getUserId()); |
| | | if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){ |
| | | message = new WxCpMessage(); |
| | | message.setAgentId(1000024); |
| | | message.setToUser(sysStaff.getWxUserId()); |
| | | message.setMsgType("text"); |
| | | message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!"); |
| | | try { |
| | | WxCpMessageSendResult result = wxCpService.getMessageService().send(message); |
| | | System.out.println(result); |
| | | } catch (WxErrorException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |