| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.lang.PatternPool; |
| | | import cn.hutool.core.lang.Validator; |
| | | import cn.hutool.core.util.IdcardUtil; |
| | | import cn.hutool.core.util.PhoneUtil; |
| | | import cn.hutool.core.util.ReUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | 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.HttpsUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | 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.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.TrainTimeMapper; |
| | | import com.doumee.dao.business.join.MemberJoinMapper; |
| | | import com.doumee.dao.business.join.UserActionJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.web.reqeust.CheckVisitedDTO; |
| | | 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.commons.lang3.time.DateUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 人员信息表Service实现 |
| | | * @author 江蹄蹄 |
| | | * @date 2023/11/23 18:16 |
| | | * @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 SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | | private UserActionJoinMapper userActionJoinMapper; |
| | | |
| | | @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) { |
| | | memberMapper.deleteById(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 |
| | |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | return; |
| | | } |
| | | memberMapper.deleteBatchIds(ids); |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Member member=new Member(); |
| | | ids.stream().forEach(s ->{ |
| | | member.setId(s); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setEditor(loginUserInfo.getId()); |
| | | member.setEditDate(new Date()); |
| | | memberMapper.updateById(member); |
| | | }); |
| | | /* 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(member.getStatus()); |
| | | 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); |
| | | } |
| | | if(Constants.equalsInteger(result.getType(),Constants.ZERO)){ |
| | | userAction.setType(Constants.TWO); |
| | | } |
| | | 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(s.getStatus()); |
| | | update.setId(s.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.ZERO); |
| | | } |
| | | if(Constants.equalsInteger(result.getType(),Constants.ZERO)){ |
| | | userAction.setType(Constants.THREE); |
| | | } |
| | | userAction.setMemberId(result.getId()+""); |
| | | userAction.setBeforeStatus(status); |
| | | 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 |
| | |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | 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().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()); |
| | |
| | | } |
| | | |
| | | @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); |
| | | 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) { |
| | | /* //是否是数字 |
| | | boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords()); |
| | | //是否包含中文 |
| | | boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords()); |
| | | //是否包含英文 |
| | | boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());*/ |
| | | |
| | | /* IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); |
| | | MemberQuery model = pageWrap.getModel(); |
| | | Utils.MP.blankToNull(model); |
| | | |
| | | queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId) |
| | | .leftJoin(DeviceRole.class,DeviceRole::getId,Member::getRoleId); |
| | | *//* .leftJoin(MemberCard.class,MemberCard::getMemberId,Member::getId);*//* |
| | | |
| | | queryWrapper.selectAll(Member.class) |
| | | .selectAs(Company::getName,MemberInfoDTO::getCompanyName) |
| | | .selectAs(DeviceRole::getName,MemberInfoDTO::getRoleName) |
| | | *//* .select("count(t3.id) as memberCardCount ");*//* |
| | | .select(""); |
| | | |
| | | queryWrapper.in(Objects.nonNull(model.getCompanyIds()),Member::getCompanyId,model.getCompanyIds()) |
| | | *//* .like(number,Member::getPhone,model.getKeyWords()) |
| | | .like((b||hasWord),Member::getPhone,model.getKeyWords())*//* |
| | | .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),ms->ms.like(Member::getPhone,model.getKeyWords()) |
| | | .or().like(Member::getName,model.getKeyWords()) |
| | | .or().like(Member::getCode,model.getKeyWords())) |
| | | |
| | | .isNull(Constants.equalsInteger(model.getHasFace(),Constants.ZERO),Member::getFaceId) |
| | | .isNotNull(Constants.equalsInteger(model.getHasFace(),Constants.ONE),Member::getFaceId) |
| | | .eq(Objects.nonNull(model.getCanVisit()),Member::getCanVisit,model.getCanVisit()) |
| | | .eq(Objects.nonNull(model.getStatus()),Member::getStatus,model.getStatus()); |
| | | IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper); |
| | | if (!CollectionUtils.isEmpty(memberIPage.getRecords())){ |
| | | memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()))); |
| | | }*/ |
| | | IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); |
| | | |
| | | queryWrapper.selectAll(Member.class); |
| | | 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().getKeyWords()),ms->ms.like(Member::getPhone,pageWrap.getModel().getKeyWords()) |
| | | .or().like(Member::getName,pageWrap.getModel().getKeyWords()) |
| | | .or().like(Member::getCode,pageWrap.getModel().getKeyWords())) |
| | | .isNull(Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ZERO),Member::getFaceId) |
| | | .isNotNull(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::getCanVisit,pageWrap.getModel().getStatus()) |
| | | .eq(Member::getIsdeleted,0) |
| | | .orderByDesc(Member::getCreateDate); |
| | | |
| | | IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper); |
| | | return PageData.from(memberIPage); |
| | | } |
| | | |
| | | |
| | | @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) |
| | | .select(" (select count(v.id) from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0) as visitsCount") |
| | | .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE limit 1) as visitsLastDate"); |
| | | |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Member::getName,pageWrap.getModel().getName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getPhone()),Member::getPhone,pageWrap.getModel().getPhone()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo()) |
| | | .eq(Member::getStatus,Constants.Status.FREEZE) |
| | | .orderByDesc(Member::getCreateDate); |
| | | |
| | | |
| | | 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 and ua.type=1 order by ua.CREATE_DATE limit 1) as userActionType1") |
| | | /* .select(" (select count(v.id) from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0) as visitsCount")*/ |
| | | .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE limit 1) as visitsLastDate"); |
| | | |
| | | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Member::getName,pageWrap.getModel().getName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getPhone()),Member::getPhone,pageWrap.getModel().getPhone()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo()) |
| | | .eq(Member::getStatus,Constants.Status.ENABLE) |
| | | .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 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); |
| | | 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(); |
| | | BeanUtils.copyProperties(member,memberVO); |
| | | return memberVO; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |