| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.core.utils.qiyeweixin.QywxUtil; |
| | | import com.doumee.core.utils.qiyeweixin.model.response.QywxDepartInfoResponse; |
| | | import com.doumee.core.utils.qiyeweixin.model.response.QywxUserAttrInfoResponse; |
| | | import com.doumee.core.utils.qiyeweixin.model.response.QywxUserExtAttrResponse; |
| | | import com.doumee.core.utils.qiyeweixin.model.response.QywxUserListResponse; |
| | | import com.doumee.core.utils.qiyeweixin.model.response.*; |
| | | import com.doumee.dao.business.CompanyMapper; |
| | | import com.doumee.dao.business.CompanyMemberMapper; |
| | | import com.doumee.dao.business.ManagersMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.CompanyMember; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.web.dto.LoginH5DTO; |
| | | import com.doumee.dao.web.dto.UpdEmailDTO; |
| | | import com.doumee.service.business.MemberService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestHeader; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 人员信息表Service实现 |
| | |
| | | * @since 2025/04/02 17:49 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class MemberServiceImpl implements MemberService { |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | | private CompanyMemberMapper companyMemberMapper; |
| | | @Autowired |
| | | private ManagersMapper managersMapper; |
| | | |
| | | @Override |
| | | public Integer create(Member member) { |
| | |
| | | |
| | | @Override |
| | | public void updateById(Member member) { |
| | | memberMapper.updateById(member); |
| | | if( member.getId() == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .eq(Member::getId,member.getId() ) |
| | | .set(Member::getSex,member.getSex() ) |
| | | .set(Member::getPhone,member.getPhone() ) |
| | | .set(Member::getRemark,member.getRemark() ) |
| | | .set(Member::getEmail,member.getEmail() ) |
| | | .set(Member::getEditDate,new Date()) |
| | | .set(Member::getEditor,user.getId()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<Member> findList(Member member) { |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectList(wrapper); |
| | | public List<Member> findList(Member pageWrap) { |
| | | pageWrap.setIsdeleted(Constants.ZERO); |
| | | MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper. selectAll(Member.class) |
| | | .selectAs(SystemUser::getUsername,Member::getEditorName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Member::getEditor) |
| | | .eq(pageWrap.getId() != null, Member::getId, pageWrap.getId()) |
| | | .eq(pageWrap.getCreator() != null, Member::getCreator, pageWrap.getCreator()) |
| | | .ge(pageWrap.getCreateDate() != null, Member::getCreateDate, Utils.Date.getStart(pageWrap.getCreateDate())) |
| | | .le(pageWrap.getCreateDate() != null, Member::getCreateDate, Utils.Date.getEnd(pageWrap.getCreateDate())) |
| | | .eq(pageWrap.getEditor() != null, Member::getEditor, pageWrap.getEditor()) |
| | | .ge(pageWrap.getEditDate() != null, Member::getEditDate, Utils.Date.getStart(pageWrap.getEditDate())) |
| | | .le(pageWrap.getEditDate() != null, Member::getEditDate, Utils.Date.getEnd(pageWrap.getEditDate())) |
| | | .eq(pageWrap.getIsdeleted() != null, Member::getIsdeleted, pageWrap.getIsdeleted()) |
| | | .like(pageWrap.getName() != null, Member::getName, pageWrap.getName()) |
| | | .eq(pageWrap.getRemark() != null, Member::getRemark, pageWrap.getRemark()) |
| | | .eq(pageWrap.getStatus() != null, Member::getStatus, pageWrap.getStatus()) |
| | | .eq(pageWrap.getSortnum() != null, Member::getSortnum, pageWrap.getSortnum()) |
| | | .eq(pageWrap.getImgurl() != null, Member::getImgurl, pageWrap.getImgurl()) |
| | | .eq(pageWrap.getType() != null, Member::getType, pageWrap.getType()) |
| | | .eq(pageWrap.getCompanyName() != null, Member::getCompanyName, pageWrap.getCompanyName()) |
| | | .eq(pageWrap.getPhone() != null, Member::getPhone, pageWrap.getPhone()) |
| | | .eq(pageWrap.getEmail() != null, Member::getEmail, pageWrap.getEmail()) |
| | | .eq(pageWrap.getSex() != null, Member::getSex, pageWrap.getSex()) |
| | | .eq(pageWrap.getCode() != null, Member::getCode, pageWrap.getCode()) |
| | | .eq(pageWrap.getQwId() != null, Member::getQwId, pageWrap.getQwId()) |
| | | .eq(pageWrap.getIdcard() != null, Member::getIdcard, pageWrap.getIdcard()) |
| | | .ge(pageWrap.getLastLoginDate() != null, Member::getLastLoginDate, Utils.Date.getStart(pageWrap.getLastLoginDate())) |
| | | .le(pageWrap.getLastLoginDate() != null, Member::getLastLoginDate, Utils.Date.getEnd(pageWrap.getLastLoginDate())) |
| | | .eq(pageWrap.getLoginCount() != null, Member::getLoginCount, pageWrap.getLoginCount()); |
| | | if (pageWrap.getKeyword() != null) { |
| | | queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getKeyword()) |
| | | .or().like(Member::getPhone,pageWrap.getKeyword()) |
| | | .or().like(Member::getCompanyName,pageWrap.getKeyword())); |
| | | } |
| | | if(pageWrap.getIncludeChild()!=null &&pageWrap.getIncludeChild() ){ |
| | | if(pageWrap.getCompanyId() !=null){ |
| | | //如果包含下级组织 |
| | | Company company = companyMapper.selectById(pageWrap.getCompanyId());//查询组织信息 |
| | | queryWrapper.exists("select (cm.id) from company_member cm where cm.company_id_path like '"+company.getIdPath()+"%' and cm.member_id=t.id"); |
| | | // queryWrapper.likeRight(Company::getIdPath,company.getIdPath()); |
| | | } |
| | | }else{ |
| | | //不包含下级组织 |
| | | queryWrapper.exists(pageWrap.getCompanyId()!=null,"select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getCompanyId()+"' and cm.member_id=t.id"); |
| | | } |
| | | return memberMapper.selectJoinList(Member.class,queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | |
| | | .eq(pageWrap.getModel().getSortnum() != null, Member::getSortnum, pageWrap.getModel().getSortnum()) |
| | | .eq(pageWrap.getModel().getImgurl() != null, Member::getImgurl, pageWrap.getModel().getImgurl()) |
| | | .eq(pageWrap.getModel().getType() != null, Member::getType, pageWrap.getModel().getType()) |
| | | // .eq(pageWrap.getModel().getCompanyId() != null, Member::getCompanyId, pageWrap.getModel().getCompanyId()) |
| | | .eq(pageWrap.getModel().getCompanyName() != null, Member::getCompanyName, pageWrap.getModel().getCompanyName()) |
| | | .eq(pageWrap.getModel().getPhone() != null, Member::getPhone, pageWrap.getModel().getPhone()) |
| | | .eq(pageWrap.getModel().getEmail() != null, Member::getEmail, pageWrap.getModel().getEmail()) |
| | | .eq(pageWrap.getModel().getSex() != null, Member::getSex, pageWrap.getModel().getSex()) |
| | |
| | | } |
| | | }else{ |
| | | //不包含下级组织 |
| | | queryWrapper.exists("select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getModel().getCompanyId()+"' and cm.member_id=t.id"); |
| | | queryWrapper.exists(pageWrap.getModel().getCompanyId()!=null,"select (cm.id) from company_member cm where cm.company_id='"+pageWrap.getModel().getCompanyId()+"' and cm.member_id=t.id"); |
| | | } |
| | | |
| | | if(Objects.nonNull(pageWrap.getModel().getIsSendCopy())&&Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getIsSendCopy())){ |
| | | queryWrapper.apply(" t.id in ( select MEMBER_ID from managers where ISDELETED= 0 and STATUS = 0 and TYPE = 1 ) "); |
| | | } |
| | | |
| | | queryWrapper.orderByAsc(Member::getCreateDate); |
| | | return PageData.from(memberMapper.selectJoinPage(page,Member.class, queryWrapper)); |
| | | PageData<Member> record = PageData.from(memberMapper.selectJoinPage(page,Member.class, queryWrapper)); |
| | | if(record!=null && record.getRecords()!=null){ |
| | | for(Member m : record.getRecords()){ |
| | | if(StringUtils.isNotBlank(m.getCompanyName())){ |
| | | m.setCompanyNameList(m.getCompanyName().split(",")); |
| | | } |
| | | } |
| | | } |
| | | return record; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void syncQwAll(){ |
| | | if(Constants.DEALING_MEMBER_SYNC){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,同步任务正在进行,请稍后刷新页面重试!"); |
| | |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Date date = new Date(); |
| | | List<QywxUserListResponse> list = new ArrayList<>(); |
| | | int index =0; |
| | | for(Company c : companyList){ |
| | | List<QywxUserListResponse> tList = QywxUtil.getUserList(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(),c.getQwId()); |
| | | if(tList!=null){ |
| | | log.error((index++)+"==============="+c.getName()+"============人员数量:"+tList.size()); |
| | | list.addAll(tList); |
| | | }else{ |
| | | log.error((index++)+"==============="+c.getName()+"============人员数量:0"); |
| | | } |
| | | } |
| | | if(list == null || list.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未同步到任何组织信息!"); |
| | | } |
| | | log.error( "###################=================人员总数量:"+list.size()); |
| | | List<Member> memberList = memberMapper.selectList(new LambdaQueryWrapper<Member>().eq(Member::getIsdeleted,Constants.ZERO)); |
| | | List<Member> newList = new ArrayList<>(); |
| | | List<Member> updateList = new ArrayList<>(); |
| | |
| | | if(StringUtils.isNotBlank(comNames)){ |
| | | comNames += ","; |
| | | } |
| | | comNames += c.getName(); |
| | | comNames += StringUtils.defaultString(c.getNamePath(),c.getName()); |
| | | } |
| | | } |
| | | cm.setCompanyList(qycom); |
| | |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Member getUserInfo(LoginH5DTO dto){ |
| | | if(Objects.isNull(dto)|| |
| | | StringUtils.isBlank(dto.getCode())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | String token = systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(); |
| | | //根据code换区企业微信ID |
| | | QywxBaseResponse<String> qwIdBaseResponse = QywxUtil.getUserInfoByCode(token,dto.getCode()); |
| | | if(Objects.isNull(qwIdBaseResponse)||Objects.isNull(qwIdBaseResponse.getErrcode())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"企业微信登录码解析失败,请联系管理员"); |
| | | } |
| | | if(!Constants.equalsInteger(qwIdBaseResponse.getErrcode(),Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"企业微信登录失败:"+qwIdBaseResponse.getErrmsg()); |
| | | } |
| | | if(Objects.isNull(qwIdBaseResponse.getData())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"企业微信用户信息解析失败,请联系管理员"); |
| | | } |
| | | String qwId = qwIdBaseResponse.getData(); |
| | | // String qwId = dto.getCode(); |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getQwId,qwId).eq(Member::getIsdeleted,Constants.ZERO).last(" limit 1 ")); |
| | | if(Objects.isNull(member)){ |
| | | //根据企业微信ID 查询用户信息 |
| | | QywxUserInfoResponse qywxUserInfoResponse = QywxUtil.getUserInfo(token,qwId); |
| | | if(Objects.isNull(qywxUserInfoResponse)||Objects.isNull(qywxUserInfoResponse.getErrcode())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"企业微信获取用户信息解析失败,请联系管理员"); |
| | | } |
| | | if(!Constants.equalsInteger(qywxUserInfoResponse.getErrcode(),Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"企业微信获取用户信息失败:"+qwIdBaseResponse.getErrmsg()); |
| | | } |
| | | member = new Member(); |
| | | member.setCreateDate(new Date()); |
| | | member.setStatus(Constants.ZERO); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setName(StringUtils.isNotBlank(qywxUserInfoResponse.getName())?qywxUserInfoResponse.getName():null); |
| | | member.setImgurl(StringUtils.isNotBlank(qywxUserInfoResponse.getAvatar())?qywxUserInfoResponse.getAvatar():null); |
| | | member.setPhone(StringUtils.isNotBlank(qywxUserInfoResponse.getMobile())?qywxUserInfoResponse.getMobile():null); |
| | | member.setQwId(qwId); |
| | | memberMapper.insert(member); |
| | | } |
| | | //查询是否有权限 |
| | | member.setDcaButton(managersMapper.selectCount(new QueryWrapper<Managers>().lambda() |
| | | .eq(Managers::getIsdeleted,Constants.ZERO).eq(Managers::getMemberId,member.getId()) |
| | | .eq(Managers::getType,Constants.TWO))>Constants.ZERO?Constants.ONE:Constants.ZERO); |
| | | return member; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void updEmail(UpdEmailDTO updEmailDTO){ |
| | | if(Objects.isNull(updEmailDTO) |
| | | || StringUtils.isBlank(updEmailDTO.getEmail()) |
| | | || Objects.isNull(updEmailDTO.getUserId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Member member = memberMapper.selectById(updEmailDTO.getUserId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"用户信息异常"); |
| | | } |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda().set(Member::getEmail,updEmailDTO.getEmail()).eq(Member::getId,member.getId())); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Member checkUserValid(Member member){ |
| | | if(Objects.isNull(member)||Objects.isNull(member.getId())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到有效用户信息"); |
| | | } |
| | | Member dbMember = memberMapper.selectById(member.getId()); |
| | | if(Objects.isNull(dbMember)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前登录用户已注销"); |
| | | } |
| | | if(!Constants.equalsInteger(dbMember.getIsdeleted(),Constants.ZERO)||!Constants.equalsInteger(dbMember.getStatus(),Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前登录用户已禁用"); |
| | | } |
| | | return dbMember; |
| | | } |
| | | |
| | | |
| | | |
| | | } |