jiangping
2025-04-10 9f7777c83f2d07c8d83c506ab2a13bc543f47de9
server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -10,10 +10,7 @@
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.MemberMapper;
@@ -21,6 +18,8 @@
import com.doumee.dao.business.model.CompanyMember;
import com.doumee.dao.business.model.Member;
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;
@@ -39,6 +38,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 人员信息表Service实现
@@ -402,4 +402,80 @@
        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();
        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);
        }
        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;
    }
}