package com.doumee.service.business.impl;
|
|
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.IdcardUtil;
|
import cn.hutool.core.util.PhoneUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.config.DataSyncConfig;
|
import com.doumee.config.Jwt.JwtPayLoad;
|
import com.doumee.config.Jwt.JwtTokenUtil;
|
import com.doumee.core.annotation.excel.ExcelImporter;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.DESUtil;
|
import com.doumee.core.utils.HttpsUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.core.utils.redis.RedisUtil;
|
import com.doumee.core.wx.WXConstant;
|
import com.doumee.dao.admin.request.LaborEmpowerDTO;
|
import com.doumee.dao.admin.request.LaborMemberDTO;
|
import com.doumee.dao.admin.request.MemberQuery;
|
import com.doumee.dao.admin.response.MemberInfoDTO;
|
import com.doumee.dao.admin.response.StagingDataVO;
|
import com.doumee.dao.business.*;
|
import com.doumee.dao.business.join.MemberJoinMapper;
|
import com.doumee.dao.business.join.RetentionJoinMapper;
|
import com.doumee.dao.business.join.UserActionJoinMapper;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.system.model.SystemDictData;
|
import com.doumee.dao.web.reqeust.AccountLoginDTO;
|
import com.doumee.dao.web.reqeust.CheckVisitedDTO;
|
import com.doumee.dao.web.reqeust.VisitMemberDTO;
|
import com.doumee.dao.web.response.MemberVO;
|
import com.doumee.dao.web.response.WxAuthorizeVO;
|
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.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.BeanUtils;
|
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 java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 人员信息表Service实现
|
* @author 江蹄蹄
|
* @date 2023/11/30 15:33
|
*/
|
@Service
|
public class MemberServiceImpl implements MemberService {
|
|
@Autowired
|
private MemberMapper memberMapper;
|
|
@Autowired
|
private MemberJoinMapper memberJoinMapper;
|
|
@Autowired
|
private TrainTimeMapper trainTimeMapper;
|
|
@Autowired
|
private MemberRoleMapper memberRoleMapper;
|
|
@Autowired
|
private DeviceRoleMapper deviceRoleMapper;
|
|
@Autowired
|
private EmpowerMapper empowerMapper;
|
|
@Autowired
|
private DeviceMapper deviceMapper;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
@Autowired
|
private UserActionJoinMapper userActionJoinMapper;
|
|
@Autowired
|
private CompanyMapper companyMapper;
|
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
@Autowired
|
private DataSyncConfig dataSyncConfig;
|
|
@Autowired
|
private RetentionJoinMapper retentionJoinMapper;
|
|
@Autowired
|
private VisitsMapper visitsMapper;
|
|
|
@Override
|
public Integer create(Member member) {
|
memberMapper.insert(member);
|
return member.getId();
|
}
|
|
@Transactional
|
@Override
|
public Integer laborMemberCreate(LaborMemberDTO member) {
|
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
if (PhoneUtil.isPhone(member.getPhone())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误");
|
}
|
if (IdcardUtil.isValidCard(member.getIdcardNo())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误");
|
}
|
if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"性别有误");
|
}
|
//获取出生日期
|
String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo());
|
//脱敏操作
|
String hide = IdcardUtil.hide(member.getIdcardNo(), 5, 14);
|
//转换日期
|
DateTime yyyyMMdd = DateUtil.parse(birthByIdCard, "yyyyMMdd");
|
|
Member insert = new Member();
|
insert.setCreator(loginUserInfo.getId());
|
insert.setCreateDate(new Date());
|
insert.setEditor(loginUserInfo.getId());
|
insert.setEditDate(new Date());
|
insert.setIsdeleted(Constants.ZERO);
|
insert.setCompanyId(member.getCompanyId());
|
insert.setFaceImg(member.getFaceImg());
|
insert.setImgurl(member.getImgurl());
|
insert.setType(Constants.ZERO);
|
insert.setName(member.getName());
|
insert.setBirthday(yyyyMMdd);
|
insert.setPhone(member.getPhone());
|
insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo()));
|
IdcardUtil.isValidCard(member.getIdcardNo());
|
insert.setIdcardDecode(hide);
|
insert.setStatus(Constants.ZERO);
|
insert.setParentId(member.getParentId());
|
memberMapper.insert(insert);
|
|
/* TrainTime trainTime = new TrainTime();
|
trainTime.setCreator(loginUserInfo.getId().toString());
|
trainTime.setCreateDate(new Date());
|
trainTime.setEdirot(loginUserInfo.getId().toString());
|
trainTime.setEditDate(new Date());
|
trainTime.setIsdeleted(Constants.ZERO);
|
trainTime.setMemberId(insert.getId());
|
trainTime.setStartTime(Utils.Date.getStart(member.getStartTime()));
|
trainTime.setEndTime(Utils.Date.getDayEnd(member.getEndTime()));
|
// trainTime.setImportStatus();
|
// trainTime.setImportInfo();
|
trainTimeMapper.insert(trainTime);*/
|
return insert.getId();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Member member=new Member();
|
member.setId(id);
|
member.setIsdeleted(Constants.ZERO);
|
member.setEditor(loginUserInfo.getId());
|
member.setEditDate(new Date());
|
memberMapper.updateById(member);
|
}
|
|
|
@Override
|
public void roleAuthById(Integer id) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member member = memberMapper.selectById(id);
|
|
|
|
|
}
|
|
|
@Override
|
public void delete(Member member) {
|
UpdateWrapper<Member> deleteWrapper = new UpdateWrapper<>(member);
|
memberMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member member=new Member();
|
ids.stream().forEach(s ->{
|
member.setId(s);
|
member.setIsdeleted(Constants.ONE);
|
member.setEditor(loginUserInfo.getId());
|
member.setEditDate(new Date());
|
memberMapper.updateById(member);
|
|
UserAction userAction=new UserAction();
|
userAction.setIsdeleted(Constants.ZERO);
|
userAction.setCreateDate(new Date());
|
userAction.setCreator(loginUserInfo.getId());
|
userAction.setType(9);
|
userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【删除】");
|
userAction.setMemberId(s+"");
|
userActionJoinMapper.insert(userAction);
|
|
});
|
|
|
|
|
|
/* memberMapper.deleteBatchIds(ids);*/
|
}
|
|
@Override
|
public void batchBlock(List<Integer> ids,Integer type) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member member=new Member();
|
for (Integer id:ids) {
|
member = memberMapper.selectById(id);
|
if(!Objects.isNull(member)&&member.getStatus()==Constants.ZERO){
|
UserAction userAction=new UserAction();
|
// userAction.setBeforeStatus(member.getStatus());
|
member.setStatus(Constants.TWO);
|
member.setEditor(loginUserInfo.getId());
|
member.setEditDate(new Date());
|
memberMapper.updateById(member);
|
|
userAction.setIsdeleted(Constants.ZERO);
|
userAction.setCreateDate(new Date());
|
userAction.setCreator(loginUserInfo.getId());
|
if(Constants.equalsInteger(type,Constants.ONE)){
|
userAction.setType(Constants.ONE);
|
userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【冻结】");
|
}
|
if(Constants.equalsInteger(type,Constants.TWO)){
|
userAction.setType(Constants.TWO);
|
userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【拉黑】");
|
|
}
|
userAction.setMemberId(id+"");
|
|
userActionJoinMapper.insert(userAction);
|
}
|
}
|
/* memberMapper.deleteBatchIds(ids);*/
|
}
|
|
|
|
|
@Override
|
public void updateById(Member member) {
|
memberMapper.updateById(member);
|
}
|
|
@Override
|
public void updateStatusById(Member member) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member update = new Member();
|
update.setEditDate(new Date());
|
update.setEditor(loginUserInfo.getId());
|
update.setStatus(member.getStatus());
|
memberMapper.updateById(update);
|
}
|
|
|
@Override
|
public void updateVisitsStatusById(Member member) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member result=memberMapper.selectById(member.getId());
|
Integer status=result.getStatus();
|
Member update = new Member();
|
update.setEditDate(new Date());
|
update.setEditor(loginUserInfo.getId());
|
update.setStatus(Constants.Status.FREEZE.getValue());
|
update.setId(member.getId());
|
memberMapper.updateById(update);
|
|
UserAction userAction=new UserAction();
|
userAction.setIsdeleted(Constants.ZERO);
|
userAction.setCreateDate(new Date());
|
userAction.setCreator(loginUserInfo.getId());
|
if(Constants.equalsInteger(result.getType(),Constants.TWO)){
|
userAction.setType(Constants.ONE);
|
userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【冻结】");
|
}
|
if(Constants.equalsInteger(result.getType(),Constants.ZERO)){
|
userAction.setType(Constants.TWO);
|
userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【拉黑】");
|
|
}
|
userAction.setMemberId(result.getId()+"");
|
userAction.setBeforeStatus(status);
|
userActionJoinMapper.insert(userAction);
|
}
|
|
|
@Override
|
public void updateRemoveStatusById(List<Member> members) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
Date date=new Date();
|
members.stream().forEach(s ->{
|
Member result=memberMapper.selectById(s.getId());
|
Integer status=result.getStatus();
|
Member update = new Member();
|
update.setEditDate(date);
|
update.setEditor(loginUserInfo.getId());
|
update.setStatus(Constants.Status.ENABLE.getValue());
|
update.setId(s.getId());
|
memberMapper.updateById(update);
|
|
//解冻业务 处理用户授权导入记录
|
this.thawMember(result);
|
|
UserAction userAction=new UserAction();
|
userAction.setIsdeleted(Constants.ZERO);
|
userAction.setCreateDate(new Date());
|
userAction.setCreator(loginUserInfo.getId());
|
if(Constants.equalsInteger(result.getType(),Constants.TWO)){
|
userAction.setType(Constants.ZERO);
|
userAction.setBeforeStatus(Constants.ONE);
|
}
|
if(Constants.equalsInteger(result.getType(),Constants.ONE)){
|
userAction.setBeforeStatus(status);
|
userAction.setType(Constants.TWO);
|
}
|
userAction.setMemberId(result.getId()+"");
|
userActionJoinMapper.insert(userAction);
|
});
|
}
|
|
|
|
|
@Override
|
public void updateCanVisitById(Member member) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Member update = new Member();
|
update.setEditDate(new Date());
|
update.setEditor(loginUserInfo.getId());
|
update.setCanVisit(member.getCanVisit());
|
memberMapper.updateById(update);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Member> members) {
|
if (CollectionUtils.isEmpty(members)) {
|
return;
|
}
|
for (Member member: members) {
|
this.updateById(member);
|
}
|
}
|
|
@Override
|
public Member findById(Integer id) {
|
return memberMapper.selectById(id);
|
}
|
|
@Override
|
public Member findOne(Member member) {
|
QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
|
return memberMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Member> findList(Member member) {
|
QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
|
if(null != member.getType()) {
|
wrapper.lambda().eq(Member::getType,member.getType());
|
}
|
wrapper.lambda().eq(Member::getIsdeleted,Constants.ZERO);
|
return memberMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Member> findPage(PageWrap<Member> pageWrap) {
|
|
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
if (pageWrap.getModel().getKeyword() != null) {
|
queryWrapper.lambda().and( ms->ms.like(Member::getName,pageWrap.getModel().getKeyword())
|
.or().like(Member::getPhone,pageWrap.getModel().getKeyword())
|
.or().like(Member::getCode,pageWrap.getModel().getKeyword()));
|
}
|
if(pageWrap.getModel().getType() != null){
|
if(pageWrap.getModel().getType().equals(Constants.memberType.visitor)){
|
queryWrapper.select(" * , (select v.COMPANY_NAME from visits v where v.MEMBER_ID = member.id and v.STATUS = 2 order by v.CREATE_DATE desc limit 1 ) as companyName , " +
|
" (select v.STARTTIME from visits v where v.MEMBER_ID = member.id and v.STATUS = 2 order by v.CREATE_DATE desc limit 1 ) as lastVisitDate , " +
|
" (select count(1) from visits v where v.MEMBER_ID = member.id and v.STATUS = 2 ) as visitTimes ");
|
}
|
}
|
|
if (pageWrap.getModel().getIsFace() != null) {
|
queryWrapper.lambda().isNull(pageWrap.getModel().getIsFace()==Constants.ZERO,Member::getFaceImg);
|
queryWrapper.lambda().isNotNull(pageWrap.getModel().getIsFace()==Constants.ONE,Member::getFaceImg);
|
}
|
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().eq(Member::getId, pageWrap.getModel().getId());
|
}
|
if (pageWrap.getModel().getCreator() != null) {
|
queryWrapper.lambda().eq(Member::getCreator, pageWrap.getModel().getCreator());
|
}
|
if (pageWrap.getModel().getCreateDate() != null) {
|
queryWrapper.lambda().ge(Member::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
|
queryWrapper.lambda().le(Member::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
|
}
|
if (pageWrap.getModel().getEditor() != null) {
|
queryWrapper.lambda().eq(Member::getEditor, pageWrap.getModel().getEditor());
|
}
|
if (pageWrap.getModel().getEditDate() != null) {
|
queryWrapper.lambda().ge(Member::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
|
queryWrapper.lambda().le(Member::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
|
}
|
if (pageWrap.getModel().getIsdeleted() != null) {
|
queryWrapper.lambda().eq(Member::getIsdeleted, pageWrap.getModel().getIsdeleted());
|
}
|
if (pageWrap.getModel().getRemark() != null) {
|
queryWrapper.lambda().eq(Member::getRemark, pageWrap.getModel().getRemark());
|
}
|
if (pageWrap.getModel().getCompanyId() != null) {
|
queryWrapper.lambda().eq(Member::getCompanyId, pageWrap.getModel().getCompanyId());
|
}
|
if (pageWrap.getModel().getFaceImg() != null) {
|
queryWrapper.lambda().eq(Member::getFaceImg, pageWrap.getModel().getFaceImg());
|
}
|
if (pageWrap.getModel().getImgurl() != null) {
|
queryWrapper.lambda().eq(Member::getImgurl, pageWrap.getModel().getImgurl());
|
}
|
if (pageWrap.getModel().getType() != null) {
|
queryWrapper.lambda().eq(Member::getType, pageWrap.getModel().getType());
|
}
|
if (pageWrap.getModel().getName() != null) {
|
queryWrapper.lambda().eq(Member::getName, pageWrap.getModel().getName());
|
}
|
if (pageWrap.getModel().getBirthday() != null) {
|
queryWrapper.lambda().ge(Member::getBirthday, Utils.Date.getStart(pageWrap.getModel().getBirthday()));
|
queryWrapper.lambda().le(Member::getBirthday, Utils.Date.getEnd(pageWrap.getModel().getBirthday()));
|
}
|
if (pageWrap.getModel().getPhone() != null) {
|
queryWrapper.lambda().eq(Member::getPhone, pageWrap.getModel().getPhone());
|
}
|
if (pageWrap.getModel().getIdcardNo() != null) {
|
queryWrapper.lambda().eq(Member::getIdcardNo, pageWrap.getModel().getIdcardNo());
|
}
|
if (pageWrap.getModel().getIdcardDecode() != null) {
|
queryWrapper.lambda().eq(Member::getIdcardDecode, pageWrap.getModel().getIdcardDecode());
|
}
|
if (pageWrap.getModel().getCode() != null) {
|
queryWrapper.lambda().eq(Member::getCode, pageWrap.getModel().getCode());
|
}
|
if (pageWrap.getModel().getClasses() != null) {
|
queryWrapper.lambda().eq(Member::getClasses, pageWrap.getModel().getClasses());
|
}
|
if (pageWrap.getModel().getStatus() != null) {
|
queryWrapper.lambda().eq(Member::getStatus, pageWrap.getModel().getStatus());
|
}
|
if (pageWrap.getModel().getParentId() != null) {
|
queryWrapper.lambda().eq(Member::getParentId, pageWrap.getModel().getParentId());
|
}
|
if (pageWrap.getModel().getOpenid() != null) {
|
queryWrapper.lambda().eq(Member::getOpenid, pageWrap.getModel().getOpenid());
|
}
|
if (pageWrap.getModel().getFsId() != null) {
|
queryWrapper.lambda().eq(Member::getFsId, pageWrap.getModel().getFsId());
|
}
|
if (pageWrap.getModel().getFsStatus() != null) {
|
queryWrapper.lambda().eq(Member::getFsStatus, pageWrap.getModel().getFsStatus());
|
}
|
if (pageWrap.getModel().getFsDate() != null) {
|
queryWrapper.lambda().ge(Member::getFsDate, Utils.Date.getStart(pageWrap.getModel().getFsDate()));
|
queryWrapper.lambda().le(Member::getFsDate, Utils.Date.getEnd(pageWrap.getModel().getFsDate()));
|
}
|
if (pageWrap.getModel().getHkId() != null) {
|
queryWrapper.lambda().eq(Member::getHkId, pageWrap.getModel().getHkId());
|
}
|
if (pageWrap.getModel().getHkStatus() != null) {
|
queryWrapper.lambda().eq(Member::getHkStatus, pageWrap.getModel().getHkStatus());
|
}
|
if (pageWrap.getModel().getHkDate() != null) {
|
queryWrapper.lambda().ge(Member::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
|
queryWrapper.lambda().le(Member::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
|
}
|
if (pageWrap.getModel().getErpId() != null) {
|
queryWrapper.lambda().eq(Member::getErpId, pageWrap.getModel().getErpId());
|
}
|
if (pageWrap.getModel().getErpDate() != null) {
|
queryWrapper.lambda().ge(Member::getErpDate, Utils.Date.getStart(pageWrap.getModel().getErpDate()));
|
queryWrapper.lambda().le(Member::getErpDate, Utils.Date.getEnd(pageWrap.getModel().getErpDate()));
|
}
|
if (pageWrap.getModel().getErpStatus() != null) {
|
queryWrapper.lambda().eq(Member::getErpStatus, pageWrap.getModel().getErpStatus());
|
}
|
if (pageWrap.getModel().getDdId() != null) {
|
queryWrapper.lambda().eq(Member::getDdId, pageWrap.getModel().getDdId());
|
}
|
if (pageWrap.getModel().getDdDate() != null) {
|
queryWrapper.lambda().ge(Member::getDdDate, Utils.Date.getStart(pageWrap.getModel().getDdDate()));
|
queryWrapper.lambda().le(Member::getDdDate, Utils.Date.getEnd(pageWrap.getModel().getDdDate()));
|
}
|
if (pageWrap.getModel().getDdStatus() != null) {
|
queryWrapper.lambda().eq(Member::getDdStatus, pageWrap.getModel().getDdStatus());
|
}
|
if (pageWrap.getModel().getPassward() != null) {
|
queryWrapper.lambda().eq(Member::getPassward, pageWrap.getModel().getPassward());
|
}
|
if (pageWrap.getModel().getCanVisit() != null) {
|
queryWrapper.lambda().eq(Member::getCanVisit, pageWrap.getModel().getCanVisit());
|
}
|
if (pageWrap.getModel().getHighCheckor() != null) {
|
queryWrapper.lambda().eq(Member::getHighCheckor, pageWrap.getModel().getHighCheckor());
|
}
|
if (pageWrap.getModel().getRoleId() != null) {
|
queryWrapper.lambda().eq(Member::getRoleId, pageWrap.getModel().getRoleId());
|
}
|
if (pageWrap.getModel().getRoleDate() != null) {
|
queryWrapper.lambda().ge(Member::getRoleDate, Utils.Date.getStart(pageWrap.getModel().getRoleDate()));
|
queryWrapper.lambda().le(Member::getRoleDate, Utils.Date.getEnd(pageWrap.getModel().getRoleDate()));
|
}
|
if (pageWrap.getModel().getErpOrgId() != null) {
|
queryWrapper.lambda().eq(Member::getErpOrgId, pageWrap.getModel().getErpOrgId());
|
}
|
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
return PageData.from(memberMapper.selectPage(page, queryWrapper));
|
}
|
|
@Override
|
public PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap) {
|
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
|
MemberInfoDTO model = pageWrap.getModel();
|
Utils.MP.blankToNull(model);
|
Date end =pageWrap.getModel().getTrainTimeEndTime() !=null? Utils.Date.getEnd(pageWrap.getModel().getTrainTimeEndTime()):new Date();
|
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
|
/* .leftJoin(TrainTime.class,TrainTime::getMemberId,Member::getId)
|
.leftJoin(Empower.class,Empower::getMemberId,Member::getId);*/
|
|
queryWrapper.selectAll(Member.class)
|
.selectAs(Company::getName,MemberInfoDTO::getCompanyName)
|
.selectAs(Company::getLinkName,MemberInfoDTO::getLinkName)
|
/*.select(" (select Max(tt.END_TIME) from train_time tt where tt.ISDELETED=0 and tt.MEMBER_ID=t.id) as trainTimeEndTime")*/
|
.select(" (select Max(e.END_TIME) from empower e where e.ISDELETED=0 and e.MEMBER_ID=t.id) as empowerEndTime");
|
|
queryWrapper.eq(Member::getType,Constants.ZERO);
|
queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId())
|
.like(StringUtils.isNotBlank(model.getName()),Member::getName,model.getName())
|
.like(StringUtils.isNotBlank(model.getPhone()),Member::getPhone,model.getPhone())
|
.like(StringUtils.isNotBlank(model.getIdcardDecode()),Member::getIdcardDecode,model.getIdcardDecode())
|
.having(pageWrap.getModel().getTrainTimeEndTime()!=null,"trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss"));
|
IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
|
if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
|
memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
|
}
|
return PageData.from(memberIPage);
|
}
|
|
@Override
|
public long count(Member member) {
|
QueryWrapper<Member> wrapper = new QueryWrapper<Member>(member);
|
wrapper.lambda().like(StringUtils.isNotBlank(member.getRoleIdParam()), Member::getRoleId, member.getRoleIdParam());
|
return memberMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public void importMemberBatch(LaborEmpowerDTO laborEmpowerDTO) {
|
try {
|
ExcelImporter ie = new ExcelImporter(laborEmpowerDTO.getFile(),0,0);
|
|
List<LaborEmpowerDTO.LaborMemberEmpower> dataList = ie.getDataList(LaborEmpowerDTO.LaborMemberEmpower.class,null);
|
|
if (CollectionUtils.isEmpty(dataList)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"文件无数据记录");
|
}
|
|
} catch (Exception e) {
|
|
}
|
|
}
|
|
@Override
|
public PageData<MemberInfoDTO> findMemberInfoPage(PageWrap<MemberQuery> pageWrap) {
|
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
|
|
queryWrapper.selectAll(Member.class);
|
queryWrapper.selectAs(Company::getName,Member::getCompanyName);
|
queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and mc.member_id = t.id ) as memberCardCount ");
|
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
|
queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0,
|
Member::getCompanyId,pageWrap.getModel().getCompanyIds())
|
.and(StringUtils.isNotBlank(pageWrap.getModel().getKeyword()),ms->ms
|
.like(Member::getPhone,pageWrap.getModel().getKeyword())
|
.or().like(Member::getName,pageWrap.getModel().getKeyword())
|
.or().like(Member::getCode,pageWrap.getModel().getKeyword()))
|
.isNull(!Objects.isNull(pageWrap.getModel().getHasFace())&&Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ZERO),Member::getFaceId)
|
.isNotNull(!Objects.isNull(pageWrap.getModel().getHasFace())&&Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ONE),Member::getFaceId)
|
.eq(Objects.nonNull(pageWrap.getModel().getCanVisit()),Member::getCanVisit,pageWrap.getModel().getCanVisit())
|
.eq(Objects.nonNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus())
|
.eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus())
|
.eq(Member::getIsdeleted,Constants.ZERO)
|
// .eq(Member::getStatus,Constants.Status.ENABLE.getValue())
|
.eq(Member::getType,Constants.memberType.internal)
|
.orderByDesc(Member::getCreateDate);
|
if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){
|
queryWrapper.eq( StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId());
|
}else{
|
queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Member::getCompanyId,pageWrap.getModel().getCompanyId());
|
}
|
IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
|
|
if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){
|
//FTP文件访问前缀
|
String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
|
systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
|
//门禁组信息
|
List<DeviceRole> deviceRoleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
|
.select(DeviceRole::getId,DeviceRole::getName)
|
.eq(DeviceRole::getIsdeleted,Constants.ZERO));
|
for (MemberInfoDTO memberInfoDTO:memberIPage.getRecords()) {
|
//获得门禁组名称数组
|
memberInfoDTO.setRoleNames(this.dealRoleDatas(memberInfoDTO.getRoleId(),deviceRoleList));
|
//拼接前缀
|
if(StringUtils.isNotBlank(memberInfoDTO.getFaceImg())){
|
memberInfoDTO.setFaceImg(prefixUrl + memberInfoDTO.getFaceImg());
|
}
|
if(StringUtils.isNotBlank(memberInfoDTO.getImgurl())){
|
memberInfoDTO.setImgurl(prefixUrl + memberInfoDTO.getImgurl());
|
}
|
}
|
}
|
return PageData.from(memberIPage);
|
}
|
|
|
public List<String> dealRoleDatas(String roleIds,List<DeviceRole> deviceRoleList){
|
List<String> stringList = new ArrayList<>();
|
if(StringUtils.isNotBlank(roleIds)){
|
roleIds = roleIds.replace("[","").replace("]","");
|
List<String> ids = Arrays.asList(roleIds.split(","));
|
ids.forEach(i->{
|
// DeviceRole deviceRole = deviceRoleList.stream().filter(m->m.getId().toString().equals(i)).findFirst().get();
|
DeviceRole deviceRole = findRoleById(deviceRoleList,i);
|
if(!Objects.isNull(deviceRole)){
|
stringList.add(deviceRole.getName());
|
}
|
});
|
}
|
return stringList;
|
}
|
|
private DeviceRole findRoleById(List<DeviceRole> deviceRoleList, String id) {
|
for(DeviceRole role : deviceRoleList){
|
if(StringUtils.equals(role.getId().toString(),id)){
|
return role;
|
}
|
}
|
return null;
|
}
|
|
@Override
|
public PageData<MemberInfoDTO> findVisitPage(PageWrap<MemberQuery> pageWrap) {
|
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
|
queryWrapper.selectAll(Member.class)
|
.selectAs(Company::getName,MemberInfoDTO::getCompanyName)
|
.selectAs(Member::getLastVisitDate,MemberInfoDTO::getVisitsLastDate)
|
.select(" (select count(v.id) from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 and v.status in (7,8) ) as visitsCount");
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Member::getName,pageWrap.getModel().getName())
|
.like(StringUtils.isNotBlank(pageWrap.getModel().getPhone()),Member::getPhone,pageWrap.getModel().getPhone())
|
.and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), ms->ms.like(Member::getVisitCompanyName,pageWrap.getModel().getCompanyName())
|
.or().like(Company::getName,pageWrap.getModel().getCompanyName()))
|
.like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo())
|
.eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus())
|
.eq(Objects.nonNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus())
|
.eq(Member::getType,Constants.memberType.visitor)
|
.eq(Member::getIsdeleted,Constants.ZERO)
|
.orderByDesc(Member::getCreateDate);
|
if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){
|
queryWrapper.eq( StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId());
|
}else{
|
queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Member::getCompanyId,pageWrap.getModel().getCompanyId());
|
}
|
IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
|
return PageData.from(memberIPage);
|
|
}
|
|
|
@Override
|
public PageData<MemberInfoDTO> findUnusualPage(PageWrap<MemberQuery> pageWrap) {
|
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
|
queryWrapper.selectAll(Member.class)
|
.selectAs(Company::getName,MemberInfoDTO::getCompanyName)
|
.select(" (select ua.CREATE_DATE from user_action ua where ua.MEMBER_ID=t.id and ua.ISDELETED=0 order by ua.CREATE_DATE desc limit 1) as optTime")
|
.select(" (select s.REALNAME from user_action uac left join system_user s on uac.CREATOR = s.ID where uac.MEMBER_ID=t.id and uac.ISDELETED=0 order by uac.CREATE_DATE desc limit 1) as creatorName")
|
.select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE desc limit 1) as visitsLastDate")
|
.eq(Member::getIsdeleted,Constants.ZERO);
|
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getCreaterId()),Member::getEditor,pageWrap.getModel().getCreaterId());
|
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType());
|
queryWrapper
|
.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Member::getPhone,pageWrap.getModel().getName())
|
.or().like(Member::getName,pageWrap.getModel().getName()))
|
.and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
|
ms->ms.like(Company::getName,pageWrap.getModel().getCompanyName())
|
.or().like(Member::getVisitCompanyName,pageWrap.getModel().getCompanyName()))
|
.like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo())
|
.eq(Member::getStatus,Constants.Status.FREEZE.getValue())
|
.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Company::getId,pageWrap.getModel().getCompanyId())
|
.eq(Objects.nonNull(pageWrap.getModel().getCode()),Member::getCode,pageWrap.getModel().getCode())
|
.orderByDesc(Member::getCreateDate);
|
|
|
IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
|
return PageData.from(memberIPage);
|
|
}
|
|
|
/**
|
* 用户解冻 添加授权导入记录
|
* @param member
|
*/
|
public void thawMember(Member member){
|
//用户角色组
|
List<MemberRole> memberRoleList = memberRoleMapper.selectList(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
|
if(CollectionUtils.isNotEmpty(memberRoleList)){
|
List<Integer> roleIds = memberRoleList.stream().map(m->m.getId()).collect(Collectors.toList());
|
//角色组设备权限
|
List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
|
.eq(DeviceRole::getType,Constants.TWO)
|
.in(DeviceRole::getId,roleIds));
|
|
if(CollectionUtils.isNotEmpty(deviceRoleList)){
|
String ids = "";
|
List<Integer> r = new ArrayList<>();
|
for (int i = 0; i < deviceRoleList.size(); i++) {
|
DeviceRole deviceRole =deviceRoleList.get(i);
|
if(i>0){
|
ids += ",";
|
}
|
Integer id =deviceRole.getId();
|
ids += "["+id+"]";
|
String doorids =deviceRole.getDoorIds();
|
if(StringUtils.isNotBlank(doorids)){
|
String[] ss = doorids.split(",");
|
try {
|
for(String s :ss){
|
r.add(Integer.parseInt(s));
|
}
|
}catch (Exception e){
|
//脏数据不处理
|
}
|
}
|
}
|
|
if(CollectionUtils.isNotEmpty(r)){
|
List<Empower> list = new ArrayList<>();
|
List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,r));
|
if(deviceList == null || deviceList.size() == 0){
|
return;
|
}
|
for (Device deviceRole:deviceList) {
|
Empower model = new Empower();
|
model.setCreateDate(new Date());
|
model.setMemberId(member.getId());
|
model.setIsdeleted(Constants.ZERO);
|
model.setDeviceId(deviceRole.getId());
|
model.setSendStatus(Constants.ZERO);
|
model.setSendType(Constants.ZERO);
|
list.add(model);
|
}
|
//导入新增的授权信息
|
empowerMapper.insertBatchSomeColumn(list);
|
}
|
}
|
}
|
}
|
|
|
|
/**
|
* 定时冻结内部人员
|
*/
|
@Override
|
public void memberFreeze(){
|
SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_FREEZE);
|
if(Objects.isNull(systemDictData)||
|
StringUtils.isBlank(systemDictData.getCode())
|
){
|
return;
|
}
|
List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>()
|
.lambda().eq(Member::getIsdeleted,Constants.ZERO)
|
.eq(Member::getType,Constants.memberType.internal)
|
.eq(Member::getStatus,Constants.ZERO)
|
.isNotNull(Member::getHkId)
|
.exists(" SELECT 1 FROM device_event b WHERE b.ext_event_person_no = HK_ID AND TO_DAYS( NOW()) - TO_DAYS( b.CREATE_DATE ) > "+systemDictData.getCode()+" ")
|
);
|
if(CollectionUtils.isEmpty(memberList)){
|
return;
|
}
|
List<Integer> memberIds = memberList.stream().map(m->m.getId()).collect(Collectors.toList());
|
|
for (Integer id:memberIds) {
|
UserAction userAction=new UserAction();
|
userAction.setIsdeleted(Constants.ZERO);
|
userAction.setCreateDate(new Date());
|
userAction.setType(1);
|
userAction.setRemark("由定时任务于【操作时间"+DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"】,进行【冻结】");
|
userAction.setMemberId(id+"");
|
userActionJoinMapper.insert(userAction);
|
}
|
|
|
//冻结状态
|
memberMapper.update(null,new UpdateWrapper<Member>()
|
.lambda().set(Member::getStatus,Constants.TWO)
|
.set(Member::getEditDate,new Date())
|
.in(Member::getId,memberIds)
|
);
|
//处理下发数据
|
empowerMapper.update(null,new UpdateWrapper<Empower>()
|
.lambda()
|
.set(Empower::getIsdeleted,Constants.ONE)
|
.set(Empower::getSendStatus,Constants.ZERO)
|
.set(Empower::getEditDate,new Date())
|
.in(Empower::getMemberId,memberIds)
|
);
|
}
|
|
|
|
|
|
|
|
|
/********************************************公众号接口***********************************************************************/
|
|
|
/**
|
* 微信授权接口
|
* @param code
|
* @return
|
*/
|
@Override
|
public WxAuthorizeVO wxAuthorize(String code){
|
String appId = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode();
|
String appSecret = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_SECRET).getCode();
|
String getTokenUrl = WXConstant.GET_USER_INFO_URL.replace("CODE", code)
|
.replace("APPID", appId).replace("SECRET", appSecret);
|
JSONObject tokenJson = JSONObject.parseObject(HttpsUtil.get(getTokenUrl,true));
|
String openId = null;
|
if(!Objects.isNull(tokenJson.get("access_token"))){
|
openId = tokenJson.getString("openid");
|
}
|
WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
|
wxAuthorizeVO.setOpenid(openId);
|
//根据openId 查询用户信息
|
Member member = memberJoinMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()
|
.selectAll(Member.class)
|
.selectAs(Company::getName,Member::getCompanyName)
|
.leftJoin(Company.class,Company::getId,Member::getCompanyId)
|
.eq(Member::getOpenid,openId)
|
.eq(Member::getIsdeleted,Constants.ZERO)
|
.orderByDesc(Member::getCreateDate)
|
.last(" limit 1 ")
|
);
|
//非访客用户 进行判断是否存在用户
|
if(!Objects.isNull(member)){
|
if(member.getIsdeleted() == Constants.ONE){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员");
|
}
|
if(member.getStatus() != Constants.ZERO){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员");
|
}
|
if(StringUtils.isNotBlank(member.getIdcardNo())){
|
member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
|
}
|
String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
|
systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
|
member.setPrefixUrl(prefixUrl);
|
JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId()));
|
String token = JwtTokenUtil.generateToken(payLoad);
|
//存储token至redis
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
|
wxAuthorizeVO.setToken(token);
|
wxAuthorizeVO.setMember(member);
|
}
|
return wxAuthorizeVO;
|
}
|
|
|
|
|
@Override
|
public MemberVO getVisitedMember(CheckVisitedDTO checkVisitedDTO){
|
Integer validType = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.BEVISITED_USER_VALID).getCode());
|
if(Objects.isNull(checkVisitedDTO)||StringUtils.isBlank(checkVisitedDTO.getMobile())||(validType.equals(Constants.ONE)&&StringUtils.isBlank(checkVisitedDTO.getName()))){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
|
.eq(Member::getPhone,checkVisitedDTO.getMobile())
|
.eq(validType.equals(Constants.ONE),Member::getName,checkVisitedDTO.getName())
|
.eq(Member::getIsdeleted,Constants.ZERO)
|
// .eq(Member::getStatus,Constants.ZERO)
|
.eq(Member::getCanVisit,Constants.ONE)
|
.eq(Member::getType,Constants.memberType.internal)
|
.last(" limit 1 ")
|
);
|
MemberVO memberVO = new MemberVO();
|
if(!Objects.isNull(member)){
|
if(!member.getStatus().equals(Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"被访人账号异常,请确认后再试");
|
}
|
BeanUtils.copyProperties(member,memberVO);
|
}else{
|
throw new BusinessException(ResponseStatus.DATA_EMPTY);
|
}
|
return memberVO;
|
}
|
|
|
|
|
@Override
|
public PageData<MemberVO> getVisitedMemberList(PageWrap<VisitMemberDTO> param) {
|
VisitMemberDTO visitMemberDTO = param.getModel();
|
IPage<Member> page = new Page<>(param.getPage(), param.getCapacity());
|
MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(visitMemberDTO);
|
|
queryWrapper.selectAs(Member::getId,MemberVO::getId);
|
queryWrapper.selectAs(Member::getName,MemberVO::getName);
|
queryWrapper.selectAs(Member::getPhone,MemberVO::getPhone);
|
queryWrapper.selectAs(Member::getCompanyId,MemberVO::getCompanyId);
|
queryWrapper.selectAs(Member::getFaceImg,MemberVO::getFaceImg);
|
|
queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
|
queryWrapper.eq(Member::getStatus,Constants.ZERO);
|
queryWrapper.eq(Member::getCanVisit,Constants.ONE);
|
queryWrapper.eq(Member::getType,Constants.memberType.internal);
|
if(!Objects.isNull(visitMemberDTO)){
|
queryWrapper.and(StringUtils.isNotBlank(visitMemberDTO.getName()), ms->ms.like(Member::getPhone,visitMemberDTO.getName())
|
.or().like(Member::getPhone,visitMemberDTO.getName()));
|
}
|
queryWrapper.orderByDesc(Visits::getCreateDate);
|
IPage<MemberVO> result = memberJoinMapper.selectJoinPage(page, MemberVO.class,queryWrapper);
|
|
String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
|
systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
|
result.getRecords().forEach(i->{
|
i.setPrefixUrl(prefixUrl);
|
});
|
|
return PageData.from(result);
|
}
|
|
|
|
|
@Override
|
public WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO){
|
if(accountLoginDTO.getAccount().length()!=18
|
//&&!IdcardUtil.isValidCard(accountLoginDTO.getAccount())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!");
|
}
|
Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
|
.eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getAccount()))
|
.ne(Member::getType,Constants.memberType.visitor)
|
);
|
if(Objects.isNull(member)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到用户,请联系管理员");
|
}
|
if(member.getIsdeleted() == Constants.ONE){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员");
|
}
|
if(member.getStatus() != Constants.ZERO){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员");
|
}
|
String md5Password = DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getPassword());
|
if(!md5Password.equals(member.getPassward())){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账户密码错误!");
|
}
|
if(StringUtils.isNotBlank(accountLoginDTO.getOpenId())){
|
//先清空原有访客的openid绑定关系
|
memberMapper.update(null, new UpdateWrapper<Member>().lambda()
|
.ne(Member::getType,Constants.memberType.visitor)
|
.eq(Member::getOpenid,accountLoginDTO.getOpenId())
|
.set(Member::getOpenid,null)
|
);
|
//更新当前登录用户 openId
|
member.setOpenid(accountLoginDTO.getOpenId());
|
memberMapper.updateById(member);
|
}
|
WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
|
JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId()));
|
String token = JwtTokenUtil.generateToken(payLoad);
|
//存储token至redis
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
|
wxAuthorizeVO.setToken(token);
|
return wxAuthorizeVO;
|
}
|
|
|
|
@Override
|
public StagingDataVO stagingHead(StagingDataVO stagingHeadVO){
|
//人员信息
|
List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO));
|
if(CollectionUtils.isNotEmpty(memberList)){
|
stagingHeadVO.setWorkerCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.internal)).count());
|
stagingHeadVO.setLwCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.lw_visitor)).count());
|
stagingHeadVO.setVisitorCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.visitor)).count());
|
}
|
//在场车辆
|
stagingHeadVO.setPresenceCarCount(retentionJoinMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,3)));
|
//长期车辆
|
stagingHeadVO.setLongCarCount(retentionJoinMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,3)
|
.exists(" select 1 from park_book p where p.origin = 0 and p.car_code = retention.car_no and p.ISDELETED = 0 ")
|
));
|
stagingHeadVO.setVisitorCarCount(stagingHeadVO.getPresenceCarCount() - stagingHeadVO.getLongCarCount());
|
stagingHeadVO.setSupplierCount(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
|
.eq(Company::getIsdeleted,Constants.ZERO)
|
.eq(Company::getType,Constants.ZERO)
|
));
|
return stagingHeadVO;
|
}
|
|
|
@Override
|
public StagingDataVO stagingBody(StagingDataVO stagingHeadVO){
|
List<Map<String,Object>> companyMaps = memberJoinMapper.selectJoinMaps(
|
new MPJLambdaWrapper<Member>()
|
.select("count(1) as memberCount, t1.name as companyName")
|
.leftJoin(Company.class,Company::getId,Member::getCompanyId)
|
.eq(Member::getType,Constants.memberType.lw_visitor)
|
.groupBy(Company::getId,Company::getName)
|
);
|
List<Map<String,Object>> retentionMaps = retentionJoinMapper.selectMaps(new MPJLambdaWrapper<Retention>()
|
.select(" count(1) as memberCount, type as memberType ")
|
.ne(Retention::getType,3)
|
.groupBy(Retention::getType)
|
);
|
stagingHeadVO.setCompanyUsers(companyMaps);
|
stagingHeadVO.setRetentionUsers(retentionMaps);
|
return stagingHeadVO;
|
}
|
|
|
|
}
|