| | |
| | | import cn.hutool.core.lang.PatternPool; |
| | | import cn.hutool.core.lang.Validator; |
| | | import cn.hutool.core.util.ReUtil; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.haikang.model.HKConstants; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.CardBingdingRequest; |
| | | import com.doumee.core.haikang.model.param.request.CardDeletionRequest; |
| | | import com.doumee.core.haikang.model.param.request.CardInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.CardLossRequest; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | 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.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberCardMapper; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.join.MemberCardJoinMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.Member; |
| | |
| | | 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.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 用户卡片绑定信息表Service实现 |
| | |
| | | */ |
| | | @Service |
| | | public class MemberCardServiceImpl implements MemberCardService { |
| | | |
| | | @Autowired |
| | | private MemberRoleMapper memberRoleMapper; |
| | | @Autowired |
| | | private DeviceRoleMapper deviceRoleMapper; |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | @Autowired |
| | | private EmpowerMapper empowerMapper; |
| | | @Autowired |
| | | private MemberCardMapper memberCardMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private MemberCardJoinMapper memberCardJoinMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer create(MemberCard memberCard) { |
| | | LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(Objects.isNull(memberCard.getMemberId()) |
| | | || StringUtils.isBlank(memberCard.getCode())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(memberCard.getCode().length()<8){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡号需要大于8位"); |
| | | } |
| | | memberCard.setCreator(userInfo.getId()); |
| | | memberCard.setCreateDate(new Date()); |
| | | memberCard.setStatus(Constants.ONE); |
| | | memberCard.setIsdeleted(Constants.ZERO); |
| | | Member member = memberMapper.selectById(memberCard.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息"); |
| | | } |
| | | CardBingdingRequest param = new CardBingdingRequest(); |
| | | if(member.getStartTime() !=null && member.getEndTime()!=null){ |
| | | param.setStartDate(DateUtil.getISO8601Timestamp(member.getStartTime())); |
| | | param.setEndDate(DateUtil.getISO8601Timestamp(member.getEndTime())); |
| | | } |
| | | CardInfoRequest cr = new CardInfoRequest(); |
| | | cr.setCardNo(memberCard.getCode()); |
| | | cr.setOrgIndexCode(member.getHkOrgId()); |
| | | cr.setPersonId(member.getHkId()); |
| | | cr.setCardType(memberCard.getType()); |
| | | List<CardInfoRequest> cardList = new ArrayList<>(); |
| | | cardList.add(cr); |
| | | param.setCardList(cardList); |
| | | BaseResponse response = HKService.cardBingding(param); |
| | | if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg()); |
| | | } |
| | | memberCard.setHkStatus(Constants.ONE); |
| | | memberCardMapper.insert(memberCard); |
| | | //更新用户权限 |
| | | dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId())); |
| | | return memberCard.getId(); |
| | | } |
| | | |
| | |
| | | memberCardMapper.updateById(memberCard); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 批量挂失/解挂 |
| | | * @param memberCards 实体集 |
| | | * @param type 0=挂失;1=解挂 |
| | | */ |
| | | @Override |
| | | public void updateByIdInBatch(List<MemberCard> memberCards) { |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public void updateByIdInBatch(List<MemberCard> memberCards,Integer type) { |
| | | LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if (CollectionUtils.isEmpty(memberCards)) { |
| | | return; |
| | | } |
| | | CardLossRequest param = new CardLossRequest(); |
| | | List<CardDeletionRequest> cardList = new ArrayList(); |
| | | for (MemberCard memberCard: memberCards) { |
| | | MemberCard model = memberCardMapper.selectById(memberCard.getId()); |
| | | if(type.equals(Constants.ZERO)){ |
| | | //挂失操作 |
| | | if(!model.getStatus().equals(Constants.MemberCard.normal)){ |
| | | continue; |
| | | } |
| | | }else{ |
| | | //解挂操作 |
| | | if(!model.getStatus().equals(Constants.MemberCard.loss)){ |
| | | continue; |
| | | } |
| | | } |
| | | CardDeletionRequest cardDeletionRequest = this.dealCardData(model); |
| | | memberCard.setEditDate(new Date()); |
| | | memberCard.setEditor(userInfo.getId()); |
| | | this.updateById(memberCard); |
| | | cardList.add(cardDeletionRequest); |
| | | param.setCardList(cardList); |
| | | } |
| | | BaseResponse response = new BaseResponse(); |
| | | if(type.equals(Constants.ZERO)){ |
| | | response = HKService.cardLoss(param); |
| | | }else{ |
| | | response = HKService.cardUnLoss(param); |
| | | } |
| | | if(response==null |
| | | ||!StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg()); |
| | | } |
| | | |
| | | } |
| | | |
| | | public CardDeletionRequest dealCardData(MemberCard model){ |
| | | if(model.getType().equals(Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 为虚拟卡无法进行该操作"); |
| | | } |
| | | Member member = memberMapper.selectById(model.getMemberId()); |
| | | if(Objects.isNull(member)||Objects.isNull(member.getHkId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 对应人员海康信息异常"); |
| | | } |
| | | dealMemberRoleEmpower(member); |
| | | CardDeletionRequest cardDeletionRequest = new CardDeletionRequest(); |
| | | cardDeletionRequest.setCardNumber(model.getCode()); |
| | | cardDeletionRequest.setPersonId(member.getHkId()); |
| | | return cardDeletionRequest; |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class, BusinessException.class}) |
| | | public void updateRefundCard(MemberCard memberCard) { |
| | | MemberCard model = memberCardMapper.selectById(memberCard.getId()); |
| | | CardDeletionRequest cardDeletionRequest = this.dealCardData(model); |
| | | memberCardMapper.updateById(memberCard); |
| | | BaseResponse response = HKService.cardDeletion(cardDeletionRequest); |
| | | if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg()); |
| | | } |
| | | } |
| | | |
| | |
| | | @Override |
| | | public List<MemberCard> findList(MemberCard memberCard) { |
| | | QueryWrapper<MemberCard> wrapper = new QueryWrapper<>(memberCard); |
| | | wrapper.lambda().eq(MemberCard::getIsdeleted, Constants.ZERO); |
| | | wrapper.lambda().eq(MemberCard::getHkStatus, Constants.ONE); |
| | | // 启用和退卡的卡号 |
| | | wrapper.lambda().and(param -> param.eq(MemberCard::getStatus,Constants.ZERO). |
| | | or().eq(MemberCard::getStatus,Constants.TWO)); |
| | | return memberCardMapper.selectList(wrapper); |
| | | } |
| | | |
| | | /** |
| | | * 更细人员全部门禁权限 |
| | | * @param member |
| | | */ |
| | | private void dealMemberRoleEmpower(Member member ) { |
| | | //处理新增的人员卡片数据(与海康同步) |
| | | List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper); |
| | | HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper); |
| | | } |
| | | /** |
| | | * 更细人员全部门禁权限 |
| | | * @param |
| | | */ |
| | | @Override |
| | | public void dealMemberRoleEmpowerById(Integer memberId ) { |
| | | //处理新增的人员卡片数据(与海康同步) |
| | | Member member = memberMapper.selectById(memberId); |
| | | if(member==null){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper); |
| | | HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper); |
| | | } |
| | | |
| | | @Override |
| | |
| | | queryWrapper.orderByDesc(MemberCard::getCreateDate); |
| | | |
| | | //是否是数字 |
| | | boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords()); |
| | | boolean number = Validator.isNumber(pageWrap.getModel().getKeyword()); |
| | | //是否包含中文 |
| | | boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords()); |
| | | boolean b = Validator.hasChinese(pageWrap.getModel().getKeyword()); |
| | | //是否包含英文 |
| | | boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords()); |
| | | boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyword()); |
| | | |
| | | queryWrapper.leftJoin(Member.class,Member::getId,MemberCard::getMemberId) |
| | | .leftJoin(Company.class,Company::getId,Member::getCompanyId); |
| | | queryWrapper.selectAll(MemberCard.class) |
| | | .selectAs(Member::getName,MemberCard::getMemberName) |
| | | .selectAs(Member::getPhone,MemberCard::getMemberPhone) |
| | | .selectAs(Company::getName,MemberCard::getCompanyName); |
| | | .selectAs(Member::getType,MemberCard::getMemberType) |
| | | .selectAs(Company::getName,MemberCard::getCompanyName) |
| | | .eq(MemberCard::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.like(Objects.nonNull(pageWrap.getModel().getCode()),MemberCard::getCode,pageWrap.getModel().getCode()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus()) |
| | | .like(number,Member::getPhone,pageWrap.getModel().getKeyWords()) |
| | | .like((b||hasWord),Member::getName,pageWrap.getModel().getKeyWords()); |
| | | . eq(Objects.nonNull(pageWrap.getModel().getMemberType()),Member::getType,pageWrap.getModel().getMemberType()) |
| | | .like(number,Member::getPhone,pageWrap.getModel().getKeyword()) |
| | | .like((b||hasWord),Member::getName,pageWrap.getModel().getKeyword()); |
| | | IPage<MemberCard> memberCardIPage = memberCardJoinMapper.selectJoinPage(page, MemberCard.class,queryWrapper); |
| | | if(null != memberCardIPage && memberCardIPage.getRecords().size() > 0) { |
| | | memberCardIPage.setRecords(getDataPackage(memberCardIPage)); |
| | | } |
| | | return PageData.from(memberCardIPage); |
| | | } |
| | | |
| | |
| | | QueryWrapper<MemberCard> wrapper = new QueryWrapper<>(memberCard); |
| | | return memberCardMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | private List<MemberCard> getDataPackage(IPage<MemberCard> memberCardIPage) { |
| | | List<MemberCard> newDataList = new ArrayList<>(); |
| | | memberCardIPage.getRecords().stream().forEach(obj->{ |
| | | if(null != obj.getMemberType()) { |
| | | if(Constants.equalsInteger(obj.getMemberType(),Constants.ZERO)) { |
| | | obj.setMemberTypeName(Constants.Status.LW_FK.getDes()); |
| | | }else if(Constants.equalsInteger(obj.getMemberType(),Constants.ONE)){ |
| | | obj.setMemberTypeName(Constants.Status.PT_FK.getDes()); |
| | | }else if(Constants.equalsInteger(obj.getMemberType(),Constants.TWO)){ |
| | | obj.setMemberTypeName(Constants.Status.NB_FK.getDes()); |
| | | } |
| | | } |
| | | if(null != obj.getStatus()) { |
| | | if(Constants.equalsInteger(obj.getStatus(),Constants.ZERO)) { |
| | | obj.setStatusName(HKConstants.CardStatus.DISABLE.getName()); |
| | | }else if(Constants.equalsInteger(obj.getStatus(),Constants.ONE)) { |
| | | obj.setStatusName(HKConstants.CardStatus.ENABLE.getName()); |
| | | }else if(Constants.equalsInteger(obj.getStatus(),Constants.TWO)) { |
| | | obj.setStatusName(HKConstants.CardStatus.REFUNDCARD.getName()); |
| | | }else if(Constants.equalsInteger(obj.getStatus(),Constants.THREE)) { |
| | | obj.setStatusName(HKConstants.CardStatus.LOSS.getName()); |
| | | } |
| | | } |
| | | if(null != obj.getMemberType()) { |
| | | if(Constants.equalsInteger(obj.getMemberType(),Constants.ONE)) { |
| | | obj.setCardTypeName(HKConstants.CardStatus.IC.getName()); |
| | | }else if(Constants.equalsInteger(obj.getMemberType(),Constants.TWO)) { |
| | | obj.setCardTypeName(HKConstants.CardStatus.CPU.getName()); |
| | | }else if(Constants.equalsInteger(obj.getMemberType(),Constants.THREE)) { |
| | | obj.setCardTypeName(HKConstants.CardStatus.YJLCARD.getName()); |
| | | }else if(Constants.equalsInteger(obj.getMemberType(),Constants.FOUR)) { |
| | | obj.setCardTypeName(HKConstants.CardStatus.MCARD.getName()); |
| | | } |
| | | } |
| | | newDataList.add(obj); |
| | | }); |
| | | return newDataList; |
| | | } |
| | | } |